AFL從入門到放棄

2021-10-08 17:36:20 字數 1474 閱讀 8669

開始第一次afl-fuzz

afl-fuzz全稱american fuzzy loop,是一款特別強大的fuzzing工具。fuzzing是指模糊測試,fuzzing起源很早,其思想是通過自動化產生大量的無目的輸入來對目標系統進行測試。afl也是根據這一基本原理,再結合幾位大佬的巧妙的構思而產生。其具體的原理、fork策略、變異策略有空的時候更新

$ git clone
之後在afl資料夾中執行

$ make

$ make

install //如果安裝報許可權的錯,那麼就 $ sudo

make

install

可以輸入afl-fuzz -h檢視是否安裝成功,安裝成功則會出現afl-fuzz的–help介面。

$ gcc --version

$ clang --version

$ gedit ~/.bashrc
export path=$llvm_home:$path

source ~/.bashrc
再進入afl的資料夾,找到llvm_mode資料夾進入,執行make。afl-clang就可以執行了。

就和學一門語言都要先輸入"hello world"一樣,我們也用乙個簡單的例子開始fuzzing。

新建乙個資料夾,目錄下建立test.c檔案,並在該資料夾下新建兩個資料夾分別為in 和out 。在in資料夾中建立testcase文字檔案,隨意輸入一點文字,作為起始種子。

echo

"asdsas"

>> testcase

test.c檔案內容如下。

#include

#include

#include

#include

intmain

(int ar**,

char

*ar**)

;gets

(c);

//gets函式存在棧溢位漏洞

int l =

strlen

(c);

if(c[0]

=='a'

&&l ==20)

else

if(c[0]

=='a'

&&c[1]

=='b'

&&l ==12)

else

return

0;}

將上面的**使用afl插樁

$ afl-gcc -g test.c -o test
test檔案就是插樁好的測試檔案。下面使用afl-fuzz工具,執行介面最好全屏顯示。

$ afl-fuzz -i in -o out ./test
······先寫這麼多

kmp從入門到放棄

標籤 kmp 擴充套件kmp 給你兩個字串,你需要回答,b串是否是a串的子串 a串是否包含b串 a aaaaaaaaaaaaaaaaaaaaaaaaaab b aaaaaaaab 最壞狀態 o mn 一般做法 for 列舉b在a串中的起始位置 for 向後比較ab是否相等 o n m 傳說中的kmp...

beego 從入門到放棄

beego 的專案基本都是通過 bee命令來建立的,所以在建立專案之前確保你已經安裝了 bee 工具和 beego。如果你還沒有安裝,那麼請查閱 beego 的安裝 和 bee 工具的安裝 現在一切就緒我們就可以開始建立專案了,開啟終端,進入 gopath src 所在的目錄 建立乙個專案名為201...

Flutter從入門到放棄

本篇主要記錄下flutter的學習路線。一 認識flutter 可以檢視這些文章 二 dart語言 1 認識dart語言 2 學習 從2018.02開始出現dart2,屬於強型別語言。介紹位址參考 三 開始flutter 網上也有很多部落格介紹了flutter怎麼安裝,但大多介紹不全,第一次安裝難免...