最近コンピューターのセキュリティについて学んでいて、いくつかの問題に遭遇しました。
ファイルshellcodeでシェルコードを実行するために、オーバーフローする必要がある固定バッファを持つ関数が与えられました。関数は非常に単純です。
void vuln(char *str) {
char buf[64];
strcpy(buf, str);
//function provided to display stack on command prompt
dump_stack((void **) buf, 21, (void **) &str);
}
私の最初の推測では、関数の戻りアドレスeipを変更して、シェルコード ファイルにあるものを見つけて実行することでしたが、16 進値で表現できるファイルへのアドレスがないことに気付きました。リターンアドレスを操作する必要があると確信しているので、現在私が呼び出しているのは次のとおりです。
//the string is passed as a command line arg
./buffer_overflow_shellcode $(python -c "print 'A'*72 + '\x41\xd6\xff\xff' ")
私の出力は次のとおりです。
Stack dump:
0xffffd600: 0xffffd7fd (first argument)
0xffffd5fc: 0x08048653 (saved eip)
0xffffd5f8: 0xffffd641 (saved ebp)
0xffffd5f4: 0x41414141
0xffffd5f0: 0x41414141
0xffffd5ec: 0x41414141
0xffffd5e8: 0x41414141
0xffffd5e4: 0x41414141
0xffffd5e0: 0x41414141
0xffffd5dc: 0x41414141
0xffffd5d8: 0x41414141
0xffffd5d4: 0x41414141
0xffffd5d0: 0x41414141
0xffffd5cc: 0x41414141
0xffffd5c8: 0x41414141
0xffffd5c4: 0x41414141
0xffffd5c0: 0x41414141
0xffffd5bc: 0x41414141
0xffffd5b8: 0x41414141
0xffffd5b4: 0x41414141
0xffffd5b0: 0x41414141 (beginning of buffer)
Segmentation fault
pythonスクリプトは、edpのアドレスを追加のアドレスに置き換えてリターンアドレスに到達し、それを操作する準備ができた後、72文字のAを出力してバッファをedpおよびeipのポイントまでオーバーフローさせます。どんな助けでも本当に感謝しています、ありがとう!