我正嘗試使用返回到libc創建緩衝區溢出。返回到libc導致分段錯誤
這裏是攻擊代碼: http://codepad.org/TtoLjAHc。它創建有效負載並將其存儲在名爲badfile的文件中。
這是易受攻擊的代碼: http://codepad.org/DZ7AQy4D。它從壞文件中讀取,應該產生一個shell。
ASLR和堆棧保護已關閉。
攻擊者代碼有效。但是易受攻擊的代碼會導致段錯誤。
任何人都可以請解釋我要去哪裏錯了嗎?
的開發者代碼有關章節:
memset(buffer, "\x90", 52);
memcpy(buffer,"BUF=",4);
memcpy(buffer+36, systemAddr,4);
memcpy(buffer+40,exitAddr,4);
memcpy(buffer+44, shAddr,4);
memcpy(buffer+48, nullPad, 4);
此變量,緩衝器,現寫入到一個名爲BADFILE文件,該文件是由脆弱程序中使用的fread讀()。脆弱的程序 有關章節:
char buffer[12];
length = fread (buffer, sizeof (char), 52, badfile);
請在此處發佈代碼中的_relevant_部分,以及通過在調試器中運行漏洞而學到的知識。 – Mat 2012-02-09 15:09:45
墊子, 你可以看看現在的帖子嗎?我已經提出了相關的代碼部分。 在此先感謝, Roy – user916315 2012-02-09 15:16:51
溢出漏洞非常敏感。你必須花費一些時間用調試器,瞭解堆棧佈局,看看緩衝區在哪裏,返回地址在哪裏,你有多大的溢出以及發生了什麼。我不認爲通過論壇進行調試會起作用。 – ugoren 2012-02-09 15:36:04