###### tags: `afl` # AFL QEMU_MODE (二) 繼上次成功對x86-64的`busybox`fuzzing之後,我把目標轉到MIPS架構的`busybox`,但是卻遇到`/etc/ld.so.cache`corrupt的問題,在那之後我有在想會不會是cpu_target其實沒有指定好,但是我在指定了cpu_target之後,對x86的`busybox`下`afl-showmap -m none -o /dev/null -Q /bin/busybox`這個指令的時候,他的output顯示這個:  他說`Invalid ELF image for the architecture`,所以代表當下qemu要虛擬的架構是`MIPS`的,x86對他來說是不行的。 接下來我想要驗證的是,如果我可以找到一個static(沒有dynamic link)的binary(MIPS),然後成功的用`afl qemu_mode(cpu_target=mips)`對他進行fuzzing,那就可以驗證說,afl-fuzz本身是沒有問題的,有問題的是我本來想要拿來test的busybox因為有dynamic link library的關係,導致qemu想要虛擬化他的時候失敗了。 所以我在網路上找了一下看有沒有人提供compile好的mips binary,可以讓我來試試看。後來就找到了[這個](https://github.com/darkerego/mips-binaries)  就決定來試試看,一開始就有看到他有靜態的`busybox-mips`這個binary,所以就決定先用他來試試看,結果好像顯示我的cpu不夠跑,所以導致他的test case的reponse time太長了,然後他就自己shut down了。 `afl-fuzz -i fuzz_in -o fuzz_out -m none -Q ./busybox-mips`  我就想說那我就來試試看一個比較輕量的binary(一樣是mips架構的),所以我就找到mips的python來試試看,結果又出現不一樣的問題,後來查了一下,發現他是因為python他會一直在一個無窮迴圈裡面,然後出不來,導致afl沒辦法正常的對他做fuzzing,所以我就再來試試看下一個。 `afl-fuzz -i fuzz_in -o fuzz_out -m none -Q ./python`  下一個我選了一個也是比較小的binary,然後不是interactive的,就選`tcpdump`來試試看,後來就成功了!! `afl-fuzz -i fuzz_in -o fuzz_out -m none -Q ./tcpdump`  到這裡我們就可以知道說,`afl qemu_mode`是真的可以對不同架構下的binary做fuzzing的,可是在沒有加任何參數的情況下,我們只能對static的binary做fuzzing,有dynamic link的binary,就需要去解決link的問題(當然就是qemu在虛擬化的時候不會成功有關係)。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up