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