完成GitHub上squirrel 的运行(数据库的模糊测试)

一、squirrel的介绍

用虚拟机完成数据库的模糊测试,但是不够完善

squirrel链接

链接:link

建议下载Ubuntu 18.04

到官网下载

编译安装clang/llvm(建议9.0以上)

教程网站:link
该网站clang版本为6.0

将squirrel的文件下载到Ubuntu上

 wget https://github.com/s3team/Squirrel.git

squirrel编译前的准备:在Ubuntu命令行运行命令

sudo apt-get -y update && apt-get -y upgrade
sudo apt-get -y install gdb bison flex git make cmake build-essential gcc-multilib g++-multilib xinetd libreadline-dev zlib1g-dev
sudo apt-get -y install clang libssl-dev libncurses5-dev
cd ~
git clone https://github.com/google/AFL.git
cd AFL
sed -i  's/#define MAP_SIZE_POW2       16/#define MAP_SIZE_POW2       18/' config.h
make
cd llvm_mode/
make

下载docker(建议按照dockerfile步骤直接在外部搭建环境)

链接: link.

Dockerfile创建镜像

下载完成后在:~/Squirrel-master/DNAME/docker页面下打开命令行

过Docker命令就可以完成构建。

docker image build -t <Name:tag> <file path>
例如现在要通过已经写好的Dockerfile,构建一个jspang的镜像,就可以使用下面的命令构建。
docker image build -t jspang .

按照dockfile搭建时时有可能出现以下报错

1、不能打开网站请添加图片描述
解决办法 :打开dockerfile文件将网址中http改成git即可。

2、要根据报错安装相应缺少的包

dockerfile中命令解析成命令行

1、WORKDIR相当于命令行中cd 命令

WORKDIR /home/mysql   ##相当于cd   /home/mysql 

2、USER root 就是管理员模式 相当于 sudo su

3、COPY

作用:复制内容到镜像
格式: COPY <src> <dest>  
详解:复制本地主机的 <src>下内容到镜像中的 <dest>,目标路径不存在时,会自动创建。
<src>:可以是 Dockerfile 所在目录的一个相对路径(文件或目录)
<dest>:可以是镜像内绝对路径,或者相对于工作目录(WORKDIR)的相对路径

相当于命令行中将文件和文件夹复制的操作

4、ENV(配置环境变量)

ENV CC=/home/mysql/AFL/afl-clang-fast 
在命令行上相当于:
 export  CC=/home/mysql/AFL/afl-clang-fast

运行AFL测试MySQL

记得在afl_fuzz.c 上修改路径
请添加图片描述
修改完make一下

打开squirrel里MySQL中docker里的run.py(实际上就是脚本)

打开命令行
第一步:cd /usr/local/mysql/ 用root权限
第二步:/usr/local/mysql/bin/mysqld  --user=root --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --log-error=fuckerr.err --pid-file=fuckpid.pid &
第三步:/usr/local/mysql/bin/mysql -u root 如果不存在test1,则创建数据库;如果不存在,创建数据库
这样就进入了MySQL数据库 写exit退出数据库
第四步: kill -9 `pidof mysqld`
第五步:cd /home/cailianjiangnan/Squirrel-master/MySQL/AFL
第六步:export LD_LIBRARY_PATH=/home/mysql/mysql-server/bld_orignal/lib
第七步:./afl-fuzz -i /home/cailianjiangnan/Squirrel-master/MySQL/docker/input -o fuzz_output aaa
此时会出现SHM_ENV_VAR: xx
新建个命令行:cd /usr/local/mysql#
输入命令:export __AFL_SHM_ID=xx
再令建一个命令行:cd /home/cailianjiangnan/Squirrel-master/MySQL/AFL
/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --log-error=fuckerr.err --pid-file=fuckpid.pid --max_execution_time=1000 --user=root
然后到第七步的命令行中随便输一个字母按回车即可出现fuzz界面




评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值