2012-09-30 35 views
-1

因此,我們有一個實驗室,我們需要在程序上執行緩衝區溢出。我已經發現GCC有緩衝區溢出保護,我發現當你編譯它時,你必須使用-fno-stack-protector標誌來禁用它。在我過去之後,我使用gdb反彙編了代碼,發現我想將程序重定向到地址0x4005b1。在Linux中轉義緩衝區溢出的字符

但是當我輸入用戶輸入時,如何在ASCII中輸入b1的十六進制值?

當程序提示用戶輸入時,是否有辦法轉義b1值。類似於: aaaaaaaaaaaaaaaaaaaaaaaaaaa @^E \ xb1。通常,當我編譯程序時,地址將從0x040000開始,但是當我使用-fno-stack-protector時,會在更晚的地址開始,這就是爲什麼我需要將返回地址重定向到0x4005b1。如果沒有辦法進入b1,有什麼方法可以解決這個問題?我可以以某種方式將程序鏈接到特定地址,如果是這樣,那麼結果如何?任何其他的幫助或建議將不勝感激。

回答

0

如果你用一堆的nops開始你的程序,那麼你在地址的底部字節上有一些靈活性。

輸入特殊字符取決於您正在使用的閱讀器和行緩衝區代碼。例如,GNU readline使用Compose鍵輸入特殊字符。