バッファオーバーフローテスト ー 1
これが一番簡単なプログラムですが、コーディングが全然しない人に対する、理解が難しいです。 何の意味か、例えば、パソコンメモリーのサイズが4GB、超える場合はシステムがNGになる、なので、エラーが起こる。 一般的なエラーだったら、再起動すればいいです。もし、バッファオーバーフローのバッグは悪い人に利用されたら、危うくになる。 関連知識: プログラム知識 メモリー分配 GDBディバッグコマンド まず、下記のようなプログラムを用意します #include <stdio.h> void win() { system("/bin/sh"); } void main() { char buf[20]; gets(buf); } これから、利用のことを説明します。 上記のプログラムをコンパイルします。 gcc -fno-stack-protector -zexecstack -fno-stack-protector -no-pie -z norelro main.c -o main チェックして、メモリー保護を閉じました。 gdbでディバッグする gets は入力のメソッドです。入力の際は私たちが多くのデータを入力してみましょう。 僕が「AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AAL」を入力しました。 エラーが起こりました。これは重点なことではない、注意してください。 重点なことは、データは短くになりました。無くなったデータはメモリーに振り分けました。 オフセットを計算します。 オフセットは40です。 winのメソッドメモリーアドレスは 0x401132です。 OK、必