找了个导师,研究这方面的试着学下看看,先把工具搞出来用用,我是初学者,欢迎私信交流,一起学习!
1. 模糊测试相关
1.1 AFL工具的使用
建议:AFL工具以及GEF插件均使用root用户安装,会少很多麻烦,gef插件安装多耗费我2天时间,最后也没弄明白,换成旧版本的很好用,也很好安装 所用虚拟机Ubuntu16 所有下载用到的资源放在了阿里云盘,用的exe压缩,zip不让分享,也可自己下载 |
1.1.1 下载模糊测试使用工具AFL
Bash # 将AFL压缩包解压后,进入解压文件夹开始编译 sudo make sudo make install |
1.1.2 安装调试工具gef
Bash # gef需要匹配gdb和python的版本,建议查清个人版本后前往github下载对应版本的gef # 这里使用的是Ubuntu的16.0.4自带的gdb版本为7.11 python版本为3.5
# 下载好压缩包后上传至系统,进行解压 # 解压完成后,在根目录下输入 echo "source ~/SoftWare/gef/gef.py" > .gdbinit # 注意 上面的路径为gef的具体路径 # .gdbinit相当于是全局环境变量 # 尽量不要乱动python自带的版本,升级后的安装十分麻烦,先能用就行了 |
1.1.3 模糊测试小案例
Bash # 创建案例文件夹 mkdir fuzzing # 编写模糊测试漏洞代码(自己百度找个,AFL案例网上很多) vim test.c # 创建输入和输出文件夹 mkdir fuzzing_in fuzzing_out # 进入输入文件夹,输入测试案例 cd fuzzing_in vim testcase cd ../
# 插桩编译 afl-gcc test.c -o test |

Bash # 开始模糊测试 afl-fuzz -i fuzz_in -o fuzz_out ./test |

Bash # 切换到root用户下输入这行代码 echo core >/proc/sys/kernel/core_pattern # 之后重复上一行命令 afl-fuzz -i fuzz_in -o fuzz_out ./test |

理论上cycle done后边的数字变为绿色为结束
Bash # 摁ctrl+c 强制退出后,进入crashes目录查看 cd fuzz_out/crashes/ |

Bash # 使用gdb进入调试窗口 gef -q ../../test # 之后查看详细情况 r < id:000000,sig:06,src:000000,op:havoc,rep:128 # 里面会出现寄存器、堆栈等等出现问题的地方,刚学暂时还不会看 |
