我试图利用在printf的关于利用printf格式漏洞
#include <stdio.h>
int main()
{
int a = 1, b = 2, c = 3, d = 4;
printf("%d %d %d %d");
}
- A,B,C,d的脆弱性被压入堆栈。
- printf参数被压入堆栈,然后返回地址
- 现在,printf会从
"%d%d%d%d"
增加SP以达到参数。 - 但是,由于没有参数应达到当地主要的变量,那么B ...
但是,上面的输出是随机的较大值
-1000081144 - 10000081128 4197428 4197568 -842270912
Q1:输出中的这些值是什么。我的理解有什么问题?
Q2:如何更正上面的代码以便在printf中的主函数中打印局部变量的值? (通过利用printf的漏洞)
你还没有提到要在printf语句中打印的变量名 –
@jpw,Santhosh Pai,大家请再读一遍这个问题 –
@IvayloStrandjev我刚刚回答了第二部分。 – jpw