我最近一直在學習計算機安全並遇到了一些問題,並且特別在這個問題上遇到了一些麻煩。使用緩衝區溢出來執行shell代碼
爲了在文件shellcode中執行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,功能,以查找並執行什麼在shellcode的文件,但我意識到我沒有地址到我可以用十六進制值表示的文件。我很肯定我需要操作的返回地址,所以目前什麼我打電話是:
//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腳本只是簡單地打印72字母A對將緩衝區溢出至edp和eip處,在我用附加地址替換edp的地址併到達返回地址後,準備對其進行操作。任何幫助真的很感激,謝謝!
你是否用'-really-no-protection'和'-make-me-vulnerable-to-everything'標誌編譯了代碼?這是目前攻擊所必需的。 – 2013-05-01 20:03:01
@Daniel Fischer是的,我已經正確編譯了以前的計算機安全程序並且能夠無任何問題地將它們溢出。我知道我的程序將按預期運行 – 2013-05-01 20:21:18
好的,只是檢查明顯的嫌疑人。 – 2013-05-01 20:25:01