网络攻防笔记
网络攻防学期记录笔记
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:扫描是入侵的前奏。*端口?服务?主机类型?系统软件?补丁水平?漏洞?!
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.关于扫描器
扫描分类:根据目标功能和类型
- 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.计算机病毒
病毒擅长的是传播和潜伏,执行收集和监控任务,必要时才会发动破坏。-
病毒可以分为两类:
- exe类型(二进制类型的病毒)
- 脚本类型的病毒