GoFuzz模糊測試坑點

2021-10-09 06:07:17 字數 1489 閱讀 3394

嘗試使用 go fuzz 來測試程式,本文記錄一下測試過程。

其中遇到了一些新鮮的點,值得記錄一下。

gofuzz 的官方安裝方法如下

go install使用gofuzz測試程式,只能將byte型別的值作為輸入。

// +build gofuzz

package foo

func

fuzz

(data [

]byte

)int

如果需要測試多引數函式,複雜型別引數的函式,需要做一些序列化。

例如,下面的**用來測試newmsgissue函式。

由於fuzz函式僅接收byte型別作為引數。

我們需要自己寫乙個receivedcorpus函式,將收到的語料data反序列化為結構體。

func

fuzz

(data [

]byte

)int

msg := types.

newmsgissue

(sdk.

accaddress([

]byte

("hello"))

,&coinissueinfo)

return

0}

上述**中,receivedcorpus函式為了實現從語料的byte中反序列化出結構體,我使用的是第三方庫gob

使用方法如下

type issueparamfuzz struct

func

receivedcorpus

(data [

]byte

)(issueparamfuzz,

bool

) b := bytes.buffer

b.read

(data)

dec := gob.

newdecoder

(&b)

dec.

decode

(&ret)

return ret,

false

}

這裡不要使用encoding/binary庫,因為binary不能序列化任何引用型別或複雜型別。

模糊測試相關文章

說明 以下文章有些本人也未看過,這是在看材料時遇到便先標記下了!以便以後學習 1.fuzzing with peach part 1 一篇關於運用peach fuzz zip檔案的文章,很詳細,下面還有好多問題與回答 2.fuzzing with peach part 2 fixups 3.new ...

模糊測試基礎概念

什麼是模糊測試?我們先來了解下什麼是模糊測試?測試之美 一書如下解釋 模糊測試是通過對輸入資料進行隨機修改和破壞來測試程式的方法。雖然這一技術已經存在至少20多年 但由於安全測試的日益重視和模糊測試專用工具的增多,它在最近幾年變得更加盛行。乙個程式的模糊化可以是手工或者自動的 但伴以自動化和測試日誌...

模糊測試 黑盒測試 白盒測試 滲透測試

模糊測試 fuzz testing,fuzzing 是一種軟體測試技術。其核心思想是自動或半自動的生成隨機資料輸入到乙個程式中,並監視程式異常,如崩潰,斷言 assertion 失敗,以發現可能的程式錯誤,比如記憶體洩漏。模糊測試常常用於檢測軟體或計算機系統的安全漏洞。模糊測試的實現是乙個非常簡單的...