1
我正在學習使用GDB爲安全類導致緩衝區溢出。我有一個輸入文件,成功地使一個程序通過寫入緩衝區溢出跳轉到未經授權的功能時,我給它輸入這樣的:有沒有辦法關閉gdb的緩衝區檢查輸入?
sh myFile.txt | ./myProgram
現在我要檢查使用GDB的授權的功能。但是當我使用tty command or using <將myFile作爲輸入提供給GDB時,GDB只需要我的輸入的中間20個字節填充20字節的緩衝區。看起來GDB正在「檢查」輸入的緩衝區大小。
- gdb在做什麼?
- 如果是這樣,是否有辦法關閉它?
C代碼如下所示:
char one[20];
char two[20];
printf("..."); fflush(stdout);
gets(one); //only takes 20 bytes from the middle of printf "morethan20bytes..." from input file
printf("..."); fflush(stdout);
gets(two); //only takes 20 bytes from the middle of printf "morethan20bytes..." from input file
你如何確定這種行爲? – 2013-03-05 14:13:57
@OliCharlesworth我使用x命令檢查緩衝區1和緩衝區2的比特級內容。然後我轉換十六進制我看到ascii,並可以告訴,只是從中間輸入20個字符。 – bernie2436 2013-03-05 14:24:09
內存內容可能已被覆蓋,但由於GDB知道陣列大小,它只會顯示該內容。您可以使用超出範圍的索引來檢查數組外部,或者轉換爲指針並添加偏移量。 – 2013-03-05 14:43:27