**Fuzzing IoT binaries with AFL++ - Part II**
学习理由:本文介绍了 ALF++ qeme 模式 fuzzing Cisco 固件的 httpd binary 程序的方法。作为从 0 到 Iot binary fuzzing 的学习的入门材料非常适合,提供了足够的细节,每一步都可以复现。
# ~/fuzz/squashfs-root/www
$ /usr/bin/qemu-arm-static -L .. ../usr/sbin/httpd
$ curl <http://127.0.0.1>
抓包拿到 base-login-request.txt
POST /login.cgi HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 139
Content-Type: application/x-www-form-urlencoded
Host: 10.78.24.15
Origin: <http://10.78.24.15>
Pragma: no-cache
Referer: <http://10.78.24.15/login.cgi>
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
submit_button=login&submit_type=&gui_action=&wait_time=0&change_action=&enc=1&continue_key=&user=admin&pwd=3ff83912fdb4176a21cd5c93e2094554
「 把 main 函数中 0x231c0 处的close() 改成 exit() 」
Navigating to
0x231c0… changebl closetobl 0x10b64to call theexitfunction instead.The instruction immediately before can be changed from
mov r0, sltoeor r0, r0which sets registerr0to0to give us the following disassembly.