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