我正在尝试利用printf中的漏洞
#include <stdio.h>
int main()
{
int a = 1, b = 2, c = 3, d = 4;
printf("%d %d %d %d");
}
"%d%d%d%d"
增加到达参数。但是,上面的输出是随机大值
-1000081144 - 10000081128 4197428 4197568 -842270912
Q1:输出中的这些值是多少?我的理解有什么问题?
Q2:如何更正上面的代码,从printf打印main函数中局部变量的值? (通过利用printf的漏洞)
答案 0 :(得分:4)
无法保证变量位于堆栈的正确位置。您可以检查堆栈(gdb)并查看其正确的地址,但这几乎不是通用解决方案。