我試圖利用在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