我正在学习安全课程,需要我们对 unix 虚拟机进行格式字符串攻击。该漏洞是使用命令行参数的格式字符串。
我的问题是如何将值写入格式字符串的地址(例如将 shell 代码地址写入函数返回地址)?
例如,我尝试将值 987654 写入返回地址位置 0xaabbccdd。我尝试了一些类似的字符串"AAAA_%10$x"
,这可以导致程序打印AAAA_41414141
。
然后我用我的地址替换字母并尝试覆盖它。
\xdd\xcc\xbb\xaa_%10$x_%54321x_%n"
但它不起作用。我看到一篇文章说我应该使用较小的数字,%54321x
因为我已经写了一些字符,但我也不知道我以前写过多少个字符%54321x
。
注意:环境有老版本的gcc,不用担心值太大。有什么建议么?谢谢。