windbg附加IE后,设置flash模块加载断点
sxe ld Flash32_30_0_0_113.ocx
内存访问断点,Flash漏洞利用代码,通过任意地址读写,泄露一个Flash Object 虚表函数地址,
通过计算虚表函数地址,可以定位到Flash模块基址。
从Flash模块的导入表中获取kernel32.dll模块以及VirtualProtect函数地址,
通过覆盖虚表,执行VP,修改栈上的shellcode变量内存属性,再将栈变量覆盖给虚表函数
并执行
ba r 4 flash模块基址 ".if(eip<Flash模块结束地址){.echo \"shellcode\"}.else{g}"
VirtualAlloc条件断点,申请shellcode变量内存时断下
bp kernel32!VirtualAlloc ".if((poi(@esp+4*2)==6000)){.printf \"lpAddress=0x%08x dwSize=0x%08x flAllocationType=0x%08x flProtect=0x%08x\\n\",poi(@esp+4),poi(@esp+4*2),poi(@esp+4*3),poi(@esp+4*4);.echo hit!!! }.else{gc}; "
VirtualProtect条件断点,修改shellcode内存属性时断下
bp kernel32!VirtualProtect ".if((poi(@esp+4*3)==40)&(poi(@esp+4*2)==57e0)){.printf \"addr=0x%08x size=0x%08x newProtect=0x%08x\\n\",poi(@esp+4),poi(@esp+4*2),poi(@esp+4*3);.echo hit!!! }.else{gc}; "
创建进程时断下
bp ntdll!NtCreateUserProcess