Fuzz的那些事
Fuzz這個詞匯行內的都懂,fuzz工具我就不多說了。
今天,說說fuzz前的準備工作--如何對軟件進行修改實現可自動化和無人值守fuzz.
很多軟件會有試用期、彈窗、覆蓋提示、人機交互等等,這些都會造成無人值守的fuzz平臺無法繼續。
1.對于 注冊激活提醒彈窗,我們可以直接爆破掉驗證函數,也可以分析注冊流程,寫注冊機。
2.對于解壓縮這種軟件可能會出現覆蓋提示,如果程序中有設置最好了;如果可以爆破提示框,這樣也行,但是對于提示框,選項超級多的時候就麻煩了,分析每個按鈕,下拉列表功能,就太麻煩嗎;面對這種
情況,我給程序添加了新節,并修改了OEP,在新節中放入shellcode,shellcode功能是根據傳入的命令行,找到要解壓的路徑,遍歷清空要解壓到的文件夾,這樣就不會提示覆蓋了。(我遇到的情況比這個還復雜)
記錄下詳情:1.添加節: 利用zeroadd.exe,網上有,隨便添加個節。2.修改新節屬性為可讀可寫可執行:利用exescope工具找到新節屬性位置(Section Flags ),并看看其他text節的屬性,利用hexworkshop工具,利用ctrl+g功能快速找到屬性所在位置,修改成和text節一樣的屬性即可。3:將shellcode復制到新節位置:利用hexworkshop工具,快速地位到新節在文件中的位置(Pointer to Raw Data ) ,直接利用hexeworkshop打開shellcode的bin文件,復制粘貼過來就行。4,別忘記修改新節點的大小,大小一定要比shellcode大,如果太小,會造成shellcode無法完全載入到內存中,Virtual Size 和 size of raw data 都要修改一般都是200 400 800 這種。5.修改OEP:OEP位于optional header 中的Entry Point RVA 直接修改為新節 RVA/Offse屬性值,就行,還是利用hexworkshop快速定位OEP位置修改保存 。6.跳回真正的OEP:保留個源程序的副本,od跟蹤下真正的地址記錄下來,shellcode要預留jmp xxxx 的空間,先預留幾個nOp,使用od跟蹤,在shellcode執行完 將預留的Nop 就改為jmp 記錄的真正OEP地址(別忘記修復堆棧平衡)利用od的保存工嗯那個將文件保存下來。
轉載于:https://www.cnblogs.com/M4ster/p/fuzz1.html
總結
- 上一篇: C++学习笔记30:模板与型式参数化
- 下一篇: Django基础,Day3 - 编写 d