Wou*_*tte 2 c exploit string-formatting
当尝试遵循 C 语言字符串漏洞利用教程时,我遇到了以下问题,但我似乎找不到答案。
$(python -c 'print "\x40\x99\x04\x08%238x%10$hn"')
1)%10$n 没有写出来,它是一个格式说明符。它没有输出,只有副作用,即将此说明符之前的输出字符数写入 printf 的第 10 个参数提供的整数。由于您没有向 printf 提供 10 个参数,因此它会从堆栈中获取其他内容并将其用作地址。本教程似乎假设该地址AAAA位于此处并解释为地址 0x41414141。
2)%hn表示在给定地址不写入整数(通常为 4 字节),而只写入短值(通常为 2 字节)。使用此方法写入 2 个 2 字节值而不是 1 个 4 字节值更容易,因为您必须打印最多 4M 字符才能写入所需的值。