我的老師給了我一些代碼,我必須運行它並使其跳轉到使用緩衝區溢出的管理部分。我無法修改源代碼。有人可以解釋我如何使用緩衝區溢出跳轉到管理方法?我在Ubuntu 8.10上運行它,並使用舊版本的gcc進行編譯,因此溢出將起作用。緩衝區溢出跳轉到代碼的一部分
0
A
回答
0
如果不能看到代碼,在一般的層次上,您需要設計函數的輸入,以覆蓋堆棧上返回地址(或函數傳遞控制的另一個地址)。
猜測,代碼具有固定長度的字符緩衝區,並將函數參數中的值複製到該緩衝區中,而不驗證該長度未超過緩衝區的長度。
你需要記下你的應用程序的堆棧佈局是什麼樣子(在調試器下運行它可能是最快的方法),找出你需要覆蓋的地址,然後把一起用一個字符串覆蓋這個你需要調用的管理函數的地址。
0
你總是可以得到它的asm輸出(我現在忘了怎麼...... brainfart)並查看你想要溢出的緩衝區在哪裏被使用/讀取並檢查它的長度。接下來,您需要計算需要溢出的距離,以便使用JMP(管理代碼的地址)替換下一條指令,或者將JMP地址更改爲管理部分的地址。 0xE8是x86的跳轉操作碼,如果您需要它,因爲您想用自己的指令覆蓋該指令的二進制數據。
相關問題
- 1. 緩衝區溢出(VS)緩衝區溢出(VS)堆棧溢出
- 2. 爲什麼要跳轉到esp(緩衝區溢出)?
- 3. 緩衝區溢出
- 4. 緩衝區溢出緩衝區長度
- 5. 的strtok - 緩衝區溢出
- 6. NSData轉換堆緩衝區溢出
- 7. unicode轉換器緩衝區溢出
- 8. 爲什麼此代碼容易受到緩衝區溢出?
- 9. 緩衝區溢出不溢出
- 10. 堆棧緩衝區溢出
- 11. 緩衝區溢出攻擊
- 12. 測試緩衝區溢出
- 13. JSP緩衝區溢出
- 14. 數組緩衝區溢出
- 15. QTime緩衝區溢出?
- 16. 過程緩衝區溢出
- 17. C++溢出緩衝區
- 18. 緩衝區溢出援助
- 19. Dillema與緩衝區溢出
- 20. 緩衝區溢出與gets()
- 21. PHP緩衝區溢出
- 22. 利用緩衝區溢出
- 23. OpenCV緩衝區溢出
- 24. AudioRecord:緩衝區溢出?
- 25. 緩衝區溢出Xuggler
- 26. 試驗緩衝區溢出
- 27. 緩衝區溢出攻擊
- 28. vi,vim緩衝區溢出
- 29. PaX和緩衝區溢出
- 30. Stackbased緩衝區溢出
對於http://security.stackexchange.com,這可能是一個更好的問題,因爲您沒有顯示任何代碼... –
我已添加代碼 – functionalCode
[緩衝區溢出幫助(學術目的)]的可能重複] (http://stackoverflow.com/questions/7563668/buffer-overflow-help-academic-purpose) –