先看看调用hexmatch前后缓冲区、返回地址和返回地址上8个字节的变化(缓冲区40bytes)

在这里前后插入两个断点

然后写了一个checkspace,目的是让test在返回时返回到touch3的地址。

两处断点处栈分别是这样的


说明0x556647d8处可以放我们曲奇饼的地址!(?)
现在开始写汇编代码


根据上图写出攻击字符串的16进制形式,其中最后两行是曲奇饼的ASCII码


转换成字符串后,报错

看起来像是已经成功到达了touch3,但是没有传递正确的参数。
!!!
我发现是因为我把
movq $556647d8 %rsi
写成了
movq $556647a8 %rsi
分析了一下之后我在攻击字符串16进制表示的其中一个字节处做了改动

就成功啦!
本文详细记录了一次利用汇编代码进行攻击的过程,包括调整曲奇饼地址、修复参数传递错误,最终成功触达目标函数。通过修改攻击字符串的十六进制表示,作者解决了因地址设置错误导致的问题。
1599

被折叠的 条评论
为什么被折叠?



