10月10日上课笔记

1.关于BOF的内存溢出问题

C语言设计之初是为了OS的开发,因此没有考虑到内存溢出的问题。BOF溢出覆盖了绝大部分漏洞的场景。

对于BOF的练习小作业,应当尝试使用Linux系统中的GDB编译器查看源码。可以在Visual Studio中安装对应的GDB插件查看源码。

PS:对应BOF小练习中,passwd以及yourpasswd内存的分配前后顺序,在vc编译器和gcc编译器中刚好相反

一个新的BOF问题:

memcpy函数(复制内存,移动)

Bof是c语言的固有特征,Java是C语言添加类后又减去了指针,指针是C的精华,也是糟粕。

那么对抗Bof的终极方法——将C语言更换为Rust语言。

2.网红语言Rust

Rust可以编写Linux的内核模块。

3.扫描器,蜜罐和陷阱

扫描器工具(Nmap,Shodan)通过Vulhub安装靶机环境来方便扫描器扫描。

扫描SCAN:扫描是入侵的前奏。*端口?服务?主机类型?系统软件?补丁水平?漏洞?!image-20221010171249286

ping后得到的packet可以通过wireshark读取包内的内容。

Nmap可以通过读取包内的数据内容,猜测对应服务器的类型。

iptables命令可以扔掉指定IP地址源的包全部丢弃,在补丁没有更新的情况下保证安全。

Nmap三步走:

1.测试端口是否开放

2.测试端口的服务类型

3.测试是否存在协议的漏洞

10月17日上课笔记

1.关于Bof的新问题:

bof有时候是8字节溢出,有时候又是16字节溢出,为什么呢?

原因:微软提供了防止变量溢出的问题,在两个字节之间添加了8个字节的缓冲区域。并且起始地址往往不是从0X00开始,而是从0XCC开始在VS使用断点时,往往使用0XCC地址作为软中断的标志,此时调试器作为父进程,被调试的程序作为子进程,调试器可以获取读取的权限。

内存的基本单位?在ARM平台上可以以字节为单位,但在RISC平台是却以字为单位。因此在C语言中,指针赋值的语句将出现严重的问题。(在RISC的平台上,两个字节为一个字,不能直接去访问中间的字节的头地址)

关于覆盖的问题:寻找一段地址存放我们想要的字节内容,在返回地址处更改其具体的返回地址,使其返回我们预先存放了字节的区域的地址(就可以执行自己想要的操作)。

2.关于使用Ollydbg调试器以及WriteProcessMemory函数

ollydbg作为经典的反编译工具,可以跟踪游戏辅助工具调用函数写入数据的具体过程。辅助工具希望将指定的进程(游戏进程)中的某个地址的数据修改为某某数值,此时Ollydbg就可以检测这个写入的过程。

再进一步,不使用辅助工具,使用OD也可以修改游戏进程内部指定地址的数据。

3.一个MemoryCopy导致的错误

键盘记录器:一个检测键盘输入并且暗中监控内容的程序。

PS:一些应用在输入用户密码的页面可以有效防护密码输入的监听。

4.关于扫描器

扫描分类:根据目标功能和类型

  1. Web 2. XSS(snuck) 3. SQL(sqlmap)4. Windows/IIS 5. 网关设备(NAS或者路由器) 6.扫描特定的漏洞如:Heartbleed Ghostcatx

PS:关于LibreSSL:是OpenSSL的一个分支

10月24日上课笔记

1.vulhub官方例子

实验已经完成——关于Flask服务端模板注入漏洞(ssti)的问题

关于SSL/TLS的heartbeat

关于ms08-067

2.关于Rust

无虚拟机,没有垃圾收集器,没有运行时,无空指针/野指针/内存越界/缓冲区溢出/段错误

并且Linux 6.1 支持rust,rust已经足够成熟了。

10月31日上课笔记

1.常见的一些虚拟机环境

如docker,Vmware,ESXI

2. OpenSSL“猪队友”

Fedora Linux 37发布日期推迟,原因是为了修复一个OpenSSL高危漏洞,如果Fedora提前公布补丁,泄露出漏洞细节,将会导致黑客有可乘之机。

11月14日上课笔记

1.震网病毒

2.计算机病毒

病毒擅长的是传播和潜伏,执行收集和监控任务,必要时才会发动破坏。-

病毒可以分为两类:

  1. exe类型(二进制类型的病毒)
  2. 脚本类型的病毒