前提・実現したいこと
対象コード
c
1#include <stdio.h> 2#include <string.h> 3 4char buffer[32]; 5 6int main(int argc, char argv[]) { 7 char local[32]; 8 printf("buffer(address): 0x%x\n", &buffer); 9 fgets(local, 128, stdin); 10 strcpy(buffer, local); 11 return 0; 12}
上記のコードを元にコンパイルした実行ファイルをgdbpeda上で実行し、大量の「A」を入力した際のEIPの値が
EIP: 0x41414141 (b'AAAA')
のように表示されるはずが、なぜか
EIP: 0x56556230 (<main+119>: ret)
のようにmainからの相対的な表示になってしまいます。
どうすれば「EIP: 0x41414141 (b'AAAA')」と表示されるようになりますか?
ちなみにコンパイルは以下のようにしました:
gcc -m32 -fno-stack-protector -o test test.c
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/13 07:04