-
-
[原创]用AFL++对ARM固件进行模糊测试
-
2021-4-17 12:12 6477
-
1、安装AFL++
参考 https://github.com/AFLplusplus/AFLplusplus
sudo apt-get update sudo apt-get install -y build-essential python3-dev automake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptools # try to install llvm 11 and install the distro default if that fails sudo apt-get install -y lld-11 llvm-11 llvm-11-dev clang-11 || sudo apt-get install -y lld llvm llvm-dev clang sudo apt-get install -y gcc-$(gcc --version|head -n1|sed 's/.* //'|sed 's/\..*//')-plugin-dev libstdc++-$(gcc --version|head -n1|sed 's/.* //'|sed 's/\..*//')-dev git clone https://github.com/AFLplusplus/AFLplusplus && cd AFLplusplus cd AFLplusplus make distrib sudo make install
2、编译arm qemu,重新编译AFL++
sudo apt install qemu # 进入AFL++下的qemu_mode cd aflplusplus/AFLplusplus/qemu_mode/ export CPU_TARGET=arm ./build_qemu_support.sh
# 回到AFL++根目录,重新编译AFL++,如果不重新编译的话可能会影响afl-fuzz模式的执行 cd .. make clean make sudo make install
3、准备arm固件的文件系统
https://github.com/AFLplusplus/AFLplusplus/files/5943851/squashfs-root.tar.gz
afl++的qemu mode目前还不支持MIPS,找了一个arm的,不过有点问题。
下载解压到home目录下
cd cd squashfs-root ./bin/busybox
报错 /lib/ld-uClibc.so.0: No such file or directory
原因:没有设置QEMU_LD_PREFIX
export QEMU_LD_PREFIX=$PWD ./bin/busybox
报错 /lib/ld-uClibc.so.0: Invalid ELF image for this architecture
链接问题
原因:原文件的问题,链接文件的格式全错了,按下面的命令把所有文件分别链接。
以其中一个为例,如果全部链接完成,busybox就能顺利执行了。
cat ld-uClibc.so.0 rm ld-uClibc.so.0 ln -s ld-uClibc-0.9.33.3-git.so ld-uClibc.so.0cd
ls -l ../bin/busybox
链接全部完成,busybox就能正常执行了
# 回到squashfs-root目录下 cd .. rm -rf fuzz_* afl-fuzz -i inputs -o outtt -Q -- .binbusybox awk '{print$1}'
注意:
1、要是出现 Fork server handshake failed 或者 发现不了新路径,尝试重复第二步。
2、不要把squashfs-root安装在afl++目录下面,可能会出问题。
主要参考 https://github.com/AFLplusplus/AFLplusplus/issues/733
[招生]科锐逆向工程师培训46期预科班将于 2023年02月09日 正式开班
最后于 2021-4-17 21:12
被wx_左撇子编辑
,原因:
赞赏
他的文章