私はこのようなプログラムを持っています:
/* buf_overflow.c */
#include <stdio.h>
int main(){
char buf[4];
char exploit_buf[4];
fgets(buf, 4, stdin);
gets(exploit_buf);
printf("exploit_buf: %s\n", exploit_buf);
return 0;
}
「gets」関数の脆弱性を使用して、他のいくつかの変数をバッファオーバーフローさせます。「exploit_buf」に書き込みたい値は「AAAAAAAA\x01 \ x00 \ x00 \ x00」ですが、ASCIIコード「01」と「00」をexploit_bufに送信する方法がわかりません。
このコマンド「printf"AAAAAAAA\ x01 \ x00 \ x00 \ x00"」を使用すると、必要な文字を入力できることは知っていますが、それらをexploit_bufに送信する方法がわかりません。Alt +(キーボードの右側にある数字キー)が入力したASCIIコードから文字を生成できることも知っていますが、これは私のプログラムでも機能しません。
主な問題は、「最初の関数「fgets()」をスキップして、「gets()」に任意のASCIIコードを入力するにはどうすればよいですか」です。
Linuxのコマンドラインで任意のASCIIコードを入力する方法を知っている人はいますか?