Nautilus是一款基于覆蓋指引和語法的反饋式模糊測試工具,廣大研究人員可以使用Nautilus來提升模糊測試過程中的測試覆蓋率,以尋找到更多的安全漏洞。在Nautilus的幫助下,研究人員可以通過指定半有效的輸入語法,來執行更加復雜的變異操作,并生成更多有效的測試用例。
目前,Nautilus已發布了2.0版本,該版本相較于Nautilus原型,引入了很多功能性提升,目前該工具已經100%支持AFL++了。除了穩定性和可用性提升之外,還包括下列功能提升:
支持AFL-Qemu模式
支持Python格式語法
支持使用Python腳本生成結構化輸入
支持指定源碼協議/格式
支持指定正則表達式
避免生成相似的短輸入
提供了更好的錯誤輸出
修復大量Bug
我們可以使用類似EXPR -> EXPR + EXPR、EXPR -> NUM和NUM -> 1這樣的規則來指定一個語法。針對這些規則,模糊測試器將構建一個樹狀結構,這種內部語法表達允許支持更加復雜的變異操作。接下來,這個樹狀結構將會轉變為針對目標應用程序的真實輸入,即拼接所有的葉子節點。在下方給出的示例中,左子樹將會被解析為“a=1+2”,右子樹則為“a=1+1+1+2”。為了提高語法的表達能力,Nautilus還可以允許廣大研究人員使用Python腳本來實現對樹狀結構的解析,以支持更加復雜的操作。
首先,廣大用戶需要使用下列命令將該項目源碼克隆至本地,并進行基礎配置:
gitclone'git@github.com:nautilus-fuzz/nautilus.git'cdnautilus/path/to/AFLplusplus/afl-clang-fasttest.c-otest#afl-clang-fastasprovidedbyAFL
接下來,我們需要在config.ron文件中設置好所有需要使用的參數:
cargorun--release---ggrammars/grammar_py_example.py-o/tmp/workdir--./test@@
如果想要使用QEMU模式的話,可以運行下列命令:
cargorun/path/to/AFLplusplus/afl-qemu-trace--./test_bin@@
在這里,我們可以使用Python來生成一個語法,并生成一個有效的類XML輸入。需要注意的是,Python腳本的語法規則,這里必須確保匹配起始標簽:
#ctx.rule(NONTERM:string,RHS:string|bytes)addsaruleNONTERM->RHS.Wecanuse{NONTERM}intheRHStorequestarecursion.ctx.rule("START","<document>{XML_CONTENT}</document>")ctx.rule("XML_CONTENT","{XML}{XML_CONTENT}")ctx.rule("XML_CONTENT","")#ctx.script(NONTERM:string,RHS:[string]],func)addsaruleNONTERM->func(*RHS).#Incontrasttonormal`rule`,RHSisanarrayofnonterminals.#It'suptothefunctiontocombinethevaluesreturnedfortheNONTERMINALSwithanyfixedcontentused.ctx.script("XML",["TAG","ATTR","XML_CONTENT"],lambdatag,attr,body:b"<%s%s>%s</%s>"%(tag,attr,body,tag))ctx.rule("ATTR","foo=bar")ctx.rule("TAG","some_tag")ctx.rule("TAG","other_tag")#sometimeswedon'twanttoexplorethesetofpossibleinputsinmoredetail.Forexample,ifwefuzzascript#interpreter,wedon'twanttospendtimeonfuzzingalldifferentvariablenames.InsuchcaseswecanuseRegex#terminals.Regexterminalsareonlymutatedduringgeneration,butnotduringnormalmutationstages,savingalotoftime.#Thefuzzerstillexploresdifferentvaluesfortheregex,butitwon'tbeabletolearninterestingvaluesincrementally.#Usethiswhenincremantalexplorationwouldmostlikelywastetime.ctx.regex("TAG","[a-z]+")
接下來,我們可以使用模糊測試用例生成器來測試我們剛才生成的語法:
$cargorun--bingenerator---ggrammars/grammar_py_exmaple.py-t100<document><some_tagfoo=bar><other_tagfoo=bar><other_tagfoo=bar><some_tagfoo=bar></some_tag></other_tag><some_tagfoo=bar><other_tagfoo=bar></other_tag></some_tag><other_tagfoo=bar></other_tag><some_tagfoo=bar></some_tag></other_tag><other_tagfoo=bar></other_tag><some_tagfoo=bar></some_tag></some_tag></document>
除此之外,我們還可以結合AFL來使用Nautilus。使用“-o”參數來指向AFL到同一工作目錄,而AFL則會將數據跟Nautilus同步。在這里,AFL將導入Nautilus的輸入:
#Terminal/Screen1./afl-fuzz-Safl-i/tmp/seeds-o/tmp/workdir/./test@@#Terminal/Screen2cargorun--release---o/tmp/workdir--./test@@
感謝各位的閱讀!關于“Nautilus是一款什么工具”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
銀聯在線信用卡還款怎么做?你知道還信用卡最好的方式是哪兩種嗎?一起來看看。還信用卡最好的方式有兩種:手機銀行還款和銀聯云閃付還款。一、通過手機銀行APP還款登陸發卡行的手機銀行APP,進入信用卡界面,可查詢到本人名下在這家銀行全部信用卡賬單。以中國銀行手機銀行為例:進入首頁后,點擊“信用卡還款”,進入信用卡還款主界面。選擇需要償還的信用卡,系統自動顯示信用卡賬單金額。分&l...
(資料圖片)提起好看的特種兵言情小說有哪些啊大家在熟悉不過了,被越來越多的人所熟知,那你知道好看的特種兵言情小說有哪些啊嗎?快和小編一起去了解一下吧!1、《極道特種兵》作者黑米小狼;韓雨,意外退伍,來到都市,面對殘酷的現實,權勢的壓迫,身懷凌天傲骨的他,開始了一個男人強勢的反擊;2、《傳奇兵王》作者文刀,慕容劍風,一個原本一無所有的流浪兒,因一次偶然的機會被高人收養,傳授技能進入了特種部隊,成為了...
嘉實優質基金投資目的是怎樣的?該款基金是力爭為基金份額持有人創造較為長期并且超額的收益,但是優質基金一般投資的都是一些優質的企業,從而可以獲得較為長期的回報,并且基金公司對購買基金的配額進行一定的配置有效的管理風險,在企業的內部,會有一定的制度,并且由足夠的人力以及資產的管理資源,并且進行有效的配置,該公司的執行能力,展戰略是非常清晰的。該公司的盈利方向主要是企業的價值超過市場水平,并且存在持續增...