fuzz模糊测试

0x01 fuzz工具集合

http://www.fuzzing.org/

1、AFLplusplus

AFL实战
https://blog.csdn.net/qq_3671...
AFL整体流程:
https://blog.csdn.net/yalecal...
https://xz.aliyun.com/t/4314
一篇好的文章:
https://www.freebuf.com/artic...
各种语料:https://github.com/strongcour...

对那些可以直接从stdin读取输入的目标程序来说,语法如下:
$ ./afl-fuzz -i testcase_dir -o findings_dir /path/to/program […params…]
对从文件读取输入的目标程序来说,要用“@@”,语法如下:
$ ./afl-fuzz -i testcase_dir -o findings_dir /path/to/program @@
ex:
*   mkdir in out
*   cd in
*   cp afl-2.52b/testcases/others/elf/small_exec.elf . #afl目录中自带一些常用文件的testcase
*   cd ..
*   sudo cp /usr/bin/readelf . #把readelf复制到当前目录中来
*   afl-fuzz -i in -o out -Q ./readelf -a @@ #开始fuzz,@@表示从in文件夹中找elf作为输入,实际上就是在执行:readelf -a 文件名

2、boofuzz

安装:https://github.com/jtpereyda/...
文档:
https://boofuzz.readthedocs.i...

3、libfuzzer

官方文档:https://llvm.org/docs/LibFuzz...
各种实践:https://github.com/Dor1s/libf...

4、不同应用场景

java模糊测试
https://github.com/rohanpadhy...
https://github.com/isstac/kel...

数据库模糊测试
https://github.com/s3team/Squ...

0x02 协议测试

1、需要关注的点

协议知识:https://www.cnblogs.com/feiti...

  • 名字-值对:对值进行模糊测试
  • 块标识符:块标识符后通常紧跟边长或定长的数据,通过对块标识符进行模糊测试,可以发现一些文档中没有记录的块识别符,这些文档中没有记录的块标识符很可能会接受额外的数据类型,并带来安全风险
  • 块大小:修改数据包中标识块大小的值,使其比实际数据块的数据大小稍大或稍小一些,然后观察结果输出。缓冲区溢出只要通过这种模糊测试方法发现的。如果要替换块中的数据进行模糊测试,一定要根据实际数据的大小调整块大小的值,只有这样,被测应用才能准确识别数据块中的数据。
  • 校验和:有些文件格式在文件中嵌入了校验和(例如PNG图像格式)。在对带校验和的文件格式进行模糊测试时,模糊测试器可以自行计算校验和并将其写入文件,这样可以保证被测应用能够正常处理用于模糊测试的文件。

2、HTTP协议

模糊测试数据集需要包含的特殊字符

!@#$%^&*()-_=+{}|;:'",<.>/?~`

3、协议分析

wireshark的subversion库,直接跳到epandissectors

你可能感兴趣的:(安全)