AttackLab2

在这里插入图片描述
在这里插入图片描述
根据第一张图写出需要插入的汇编代码(第二张图说明地址有一些偏移量,并不是0x1be3而是0x555555555be3)
于是写了2threelines.s
在这里插入图片描述
然后转换成.o文件的过程中却会报错:
在这里插入图片描述
于是把threelines.s换了一种写法(但是不知道这样写对不对!)
在这里插入图片描述
此时就惊奇地可以啦
在这里插入图片描述
在这里插入图片描述
然后反汇编
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
待会我们要把这些数字插入在%rsp处,然后把%rsp填在返回地址处,这样在返回的时候就可以执行我写的这三行汇编代码的命令。

接下来查看%rsp
在这里插入图片描述
我决定把断点设在1ba6处,此时info r:
在这里插入图片描述
结合以上两张图片得到输入字符串的16进制版本:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
556647a8变成了556647b9,看来是在返回地址的地方就出了问题。

考虑到偏移了0x11,我决定把556647a8变成55664797
我又创建了一个shift2.txt
在这里插入图片描述
在这里插入图片描述
这次再运行时,却出现了另一个报错。
在这里插入图片描述
10.29--------------
尝试把最后一行0去掉,结果出现了另一种偏移
在这里插入图片描述
尝试直接用反汇编的值,就是说touch2的地址不用0x555555555be3,而是0x1be3,写了一个newlines.s
在这里插入图片描述
在这里插入图片描述

但是如果我最后一行不加00 00 00 00 报错和之前用555555555be3是一样的
在这里插入图片描述
但是如果我最后一行补上0,就出现了不一样的报错!
在这里插入图片描述
说明总算是读出了返回地址并且成功跳转了,但是0x1be3明明是touch2,为什么认不出呢?
在这里插入图片描述
gdb还是把它认成555555555be3
按照同学的建议我写了另一个lines3.s
在这里插入图片描述
在这里插入图片描述
据此写了hex5.txt

在这里插入图片描述
报错和之前的2222.txt版本是一样的,就是1be3认不出。

写了一个新的line7.s,把地址mov进寄存器后再push进栈中

在这里插入图片描述
在这里插入图片描述
据此写了hex7.txt

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值