目录
代码
简介
Radamsa是用于健壮性测试(又称为模糊测试)的测试用例生成器。它通常用于测试程序对格式错误和潜在恶意输入的承受能力。它通过读取有效数据的样本文件并从中生成令人感兴趣的不同输出来工作。radamsa的主要卖点是,它已经在真正重要的程序中发现了许多错误,它易于编写脚本,并且易于启动和运行。
目录结构
![](https://i-blog.csdnimg.cn/blog_migrate/7224596532dd7fd49572b23518bbaf93.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d0a85dbb6c63041f75fc153e0b509e35.png)
- bin 一些测试的shell脚本等
- c 库、头文件以及一对库的一些测试
- doc 文档
- rad 一些.scm文件(一种支持DRM(Digital Rights Management 数字版权保护)的新兴媒体格式)
- tests 测试目录,包含一些脚本及抓的网络包
Linux平台(Ubuntu测试)
编译
工具安装
sudo apt update
安装
sudo apt-get install gcc make git wget
下载编译
git clone git@gitlab.com:akihe/radamsa.git && cd radamsa && sudo make && sudo make install
![](https://i-blog.csdnimg.cn/blog_migrate/626949b2f61c2dd493f7827d05fce03e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e633750280efbcd5557f627187c8e775.png)
它有很多分支,我下载的develop版本。
查看版本
radamsa --version
![](https://i-blog.csdnimg.cn/blog_migrate/6df3720313a83238e1d86517799c81a5.png)
develop版本应该和master,v0.6是一样的,master和v0.6应该更稳定些。
Windows平台(Win10测试)
cygwin安装
![](https://i-blog.csdnimg.cn/blog_migrate/3fc95bad585255f2da0ce713d5444470.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b665f7077cea7235fda6ae5632b433f6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5904b9cffd5b3c4bb2418d8828bc423f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9a7d8b7373f655695fbee15753196e54.png)
上面的截图在选择包之后出现,有的人的软件有列表,我的是空的,自己Add上。
![](https://i-blog.csdnimg.cn/blog_migrate/23b6280db52523875b2f4aeef0d759a6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4d2d4351f6d5971db0ad74620e4dc402.png)
选择好后悔安装,上面以gcc和make为例,建议使用后方的命令去安装gcc make和wget
![](https://i-blog.csdnimg.cn/blog_migrate/70b10637e0f882933493affb6e8b6f71.png)
安装命令
进入到安装包目录,使用以下命令会自动到达gcc make wget的页面。
setup-x86_64.exe -q -P wget -P gcc-g++ -P make -P diffutils -P libmpfr-devel -P libgmp-devel -P libmpc-devel
安装完成,打开Cygwin.bat查看。
![](https://i-blog.csdnimg.cn/blog_migrate/1b7c94bb4610836ad6309dbc65e58e43.png)
编译
![](https://i-blog.csdnimg.cn/blog_migrate/a37b36681da5f6f5c5e55d3061b1a0e9.png)
想要不通过Cygwin运行,需要将依赖放到exe的目录中,然后使用cmd命令
cygwin1.dll在cygwin64安装目录的bin目录中,radamsa.exe路径在radamsa的bin中。
![](https://i-blog.csdnimg.cn/blog_migrate/dd777f93e2dbf2dd9428e1619ea6c6ba.png)
cmd命令调用
![](https://i-blog.csdnimg.cn/blog_migrate/371f8ba86b8bee560a68cbe409a35c78.png)
选项
用法:radamsa [参数] [文件] | |
参数 | 含义 |
-h | --help | 展示帮助信息 |
-a | --about | radamsa介绍 |
-V | --version | 版本 |
-o | --output <arg> | 输出模式,例如out.bin /tmp/fuzz-%n.%s、-、:80或127.0.0.1:80或127.0.0.1:123/udp [默认-] |
-n | --count <arg> | 要生成多少个输出(数字或inf)[默认1] |
-s | --seed <arg> | 随机种子(数字,默认随机) |
-m | --mutations <arg> | 要使用哪些突变[ft = 2,fo = 2,fn,num = 5,td,tr2,ts1,tr,ts2,ld,lds,lr2,li,ls,lp,lr, lis,lrs,sr,sd,bd,bf,bi,br,bp,bei,bed,ber,uw,ui = 2,xp = 9,ab] |
-p | --patterns <arg> | 要使用的突变模式[od,nd = 2,bu] |
-g | --generators <arg> | 要使用的数据生成器[random,file = 1000,jump = 200,stdin = 100000] |
-M | --meta <arg> | 将有关生成文件的元数据保存到此文件 |
-r | --recursive | 包括子目录中的文件 |
-S | --seek <arg> | 从给定的测试用例开始 |
-T | --truncate <arg> | 仅占用每个输出的前n个字节(主要用于UDP) |
-d | --delay <arg> | 输出之间睡眠n毫秒 |
-l | --list | 列出突变,模式和生成器 |
-C | --checksums <arg> | uniqueness过滤器中的最大校验和数(0禁用)[默认10000] |
-H | --hash <arg> | 用于唯一性检查的哈希算法(stream,sha1或sha256)[默认stream] |
-v | --verbose | 显示生成过程中的进度 |
使用举例
Hello World!
echo 'Hello World!' | radamsa
![](https://i-blog.csdnimg.cn/blog_migrate/f9f3c04f02c20b62a25aebe89ac74419.png)
json数据
sudo apt install jq
![](https://i-blog.csdnimg.cn/blog_migrate/c8e2add55f3db092d2080eb6d0124ef0.png)
添加json数据
nano test.json
不习惯nano的加,可以用vim
![](https://i-blog.csdnimg.cn/blog_migrate/7708f9a59515b5c25f4e6f16611d2a34.png)
数据如下
{
"test": "test",
"array":[
"item1: lady",
"item2: killer"
]
}
检查语法
jq . test.json
没有问题会输出,有问题根据提示改。
![](https://i-blog.csdnimg.cn/blog_migrate/243b5778129bb226fddf8a0c092214a1.png)
使用radamsa进行fuzz
radamsa test.json | jq .
![](https://i-blog.csdnimg.cn/blog_migrate/bb4cfebef615c3c5157ff93538883f1e.png)
有时fuzz后不符合json格式便会报错。
脚本编写
为了更有效的进行fuzz,编写一个小脚本。
vim jq-fuzz.sh
#!/bin/bash
while true; do
radamsa test.json>input.txt
jq . input.txt>/dev/null 2>&1
if [ $? -gt 127 ]; then
cp input.txt crash-`date +%s`.json
echo "Crash found"
fi
done
radamsa fuzz后的结果保存至input.txt,使用jq进行检验,出错的保存至crash-时间戳.json。
执行权限
chmod +x jq-fuzz.sh
./jq-fuzz.sh
运行结果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/2850d32cfb04efaf256af01127d6c166.png)
Ctrl+C停止
![](https://i-blog.csdnimg.cn/blog_migrate/deb87f453074cf2f4cca69a2b22bdab0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f4254e41360b5497100bb7429e5e8946.png)
更多内容查看:网络安全-自学笔记
喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力