0x17 漏洞利用
1. 名词解释
- fuzz:是 Fuzz testing 的缩写,全称模糊测试,是一种通过无规则试探探测漏洞的的方式。
- exploit:通常指用于验证漏洞的一段代码
- shellcode:是一段利用特定漏洞的代码
- payload:在漏洞领域,指的是实际用于攻击的那一段代码
- GetPC:获取当前指令所在地址的一种方式
- 缺点是会产生大量的 0,可能被截断(“\n”, “\r”,” “, “\0”)
使用浮点指令 FSTENV,缺点是会损坏栈的0xc大小的数据
- 缺点是会产生一条冗余的指令,inc ebx
2. 获取kernel32的基址
mov eax, fs:[0x30]; // 获取 PEB
mov eax, [eax + 0x0C]; // 获取 PEB_LDR_DATA
mov eax, [eax + 0x1c]; // LIST_ENTRY.Flink -> 第一个模块 ntdll
mov eax, [eax]; // kernelbase.dll -> 第二个模块
mov edx, [eax + 0x08]; // _LDR_DATA_TABLE_ENTRY.DllBase;
mov kernel32, edx; // kernel32.base