gpt4 book ai didi

c - 如何在格式字符串攻击中将值写入地址

转载 作者:太空狗 更新时间:2023-10-29 17:04:12 24 4
gpt4 key购买 nike

我正在上一门安全类(class),需要我们对 unix 虚拟机进行格式字符串攻击。该漏洞是使用命令行参数的格式字符串。

我的问题是如何将值写入格式字符串的地址(如将 shell 代码地址写入函数返回地址)?

例如,我尝试将值 987654 写入返回地址位置 0xaabbccdd。我尝试了一些字符串,例如 "AAAA_%10$x",这会导致程序打印 AAAA_41414141

然后我用我的地址替换字母并尝试覆盖它。

\xdd\xcc\xbb\xaa_%10$x_%54321x_%n"

但它不起作用。我看到一篇文章说我应该在 %54321x 中使用较小的数字,因为我已经写了一些字符,但我不知道在 %54321x< 之前我写了多少字符,要么。

注意:环境中有旧版本的gcc,不用担心值太大。有什么建议么?谢谢。

最佳答案

如果不使用 %n 格式说明符,

printf 无法在任何地方写入。这就是你所缺少的。类似 %.987654d%n 的东西会将数字 987654(到目前为止输出的字符数)写入第二个参数指定的地址,其中第一个参数是 int。这应该足以让您入门。

关于c - 如何在格式字符串攻击中将值写入地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4855162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com