GDB を使用してセキュリティ クラスのバッファ オーバーフローを引き起こす方法を学んでいます。次のように入力としてフィードすると、バッファオーバーフローを書き込むことにより、プログラムが許可されていない関数に正常にジャンプする入力ファイルがあります。
sh myFile.txt | ./myProgram
ここで、GDB を使用して不正な機能を調べたいと思います。しかし、 tty コマンドまたは < GDBを使用して myFile を 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