簡體   English   中英

為程序調試緩沖區溢出設置系統

[英]setting up system for program debugging buffer overflow

我記得很久以前讀過一篇文章,如果我想測試Linux機器上的緩沖區溢出,則需要在系統中進行一些設置以使其發生。 我不記得確切的用途了,但是我希望有人能知道我在說什么。

我希望能夠測試程序中的漏洞,並查看寄存器是否被覆蓋。

編輯:我正在運行ubuntu 10.04

一種選擇是使用內存調試器,例如Valgrind 但是請注意,Valgrind僅在動態分配的內存上跟蹤緩沖區溢出。

如果可以選擇使用C ++而不是C,則可以切換到使用容器而不是原始數組,並利用GCC的“已檢查容器”模式(請參閱GCC STL綁定檢查 )。 我確定其他編譯器也會提供類似的工具。

當使用gdb調試器追蹤內存錯誤時,另一個提示(除了Oli的回答 )是使用例如禁用地址空間布局隨機化

 echo 0 > /proc/sys/kernel/randomize_va_space

執行完此操作后,同一確定性程序的兩次連續運行通常會將mmap區域mmap到同一地址(從一個運行到另一個),這對gdb調試gdb (因為malloc通常會從一次運行到另一個提供相同的結果) ,在運行中的相同給定位置)。

您還可以使用gdbwatch命令。 特別是,如果在第一次運行(禁用ASLR)中發現位置0x123456意外更改,則可以在第二次運行中為gdb以下命令:

 watch * (void**) 0x123456

然后,當此位置更改時, gdb將中斷(遺憾的是,它必須已經被mmap -ed了)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM