Squirrel使用记录

记一下搞这个squirrel的过程,用的是docker的方法

Ubunut版本20.04,设定mysql作为被测试对象

1 首先git clone仓库

git clone https://github.com/OMH4ck/Squirrel.git

2 下载docker

sudo apt install curl

没有curl就装一个

curl -fsSL https://test.docker.com -o test-docker.sh
sudo sh test-docker.sh

先用curl获取脚本,连不上就想办法整个代理

运行脚本时如果出现连不上download.docker.com的情况,就去脚本文件里面把DEFAULT_DOWNLOAD_URL一项改成https://mirrors.aliyun.com/docker-ce

3 调整配置文件

在/etc/docker路径下创建daemon.json文件,内容如下:

{
 "registry-mirrors": [ 
    "https://yourownid.mirror.aliyuncs.com",
    "https://ccr.ccs.tencentyun.com",
    "http://docker.m.daocloud.io",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn/"
  ],
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": false
  },
  "mtu": 1450,
  "dns": ["114.114.114.114"]
}

镜像那里第一个是可以找阿里云申请的个人镜像,打开阿里云搜索容器镜像服务/镜像加速器,经过测试比下面几个公共的都好用。

修改完后记得

sudo systemctl daemon-reload
sudo systemctl restart docker

4 调整Dockerfile

在Squirrel/scripts/dockers/mysql目录下的Dockerfile文件中,在apt update之前一行加入这句:

RUN sed -i s:/archive.ubuntu.com:/mirrors.tuna.tsinghua.edu.cn/ubuntu:g /etc/apt/sources.list
#RUN sed -i s:/archive.ubuntu.com:/mirrors.aliyun.com:g /etc/apt/sources.list

这是在给docker里面的ubuntu换源,不然里面的apt下不动

中间有一行:

#RUN cd bld/ && make -j&& sudo cmake --install . --prefix /usr/local/mysql/
RUN cd bld/ && make -j 4 && sudo cmake --install . --prefix /usr/local/mysql/

把make -j改为make -j 4,不然容易爆内存,也不知道原作者写这句的时候用的内存有多大,反正我给虚拟机分配了48G内存,make到67%左右的时候依然会爆内存

5 尝试build

Squirrel/scripts/dockers/mysql目录下输入命令:

sudo docker build --build-arg "HTTP_PROXY=http://192.168.66.1:1080" --build-arg "HTTPS_PROXY=http://192.168.66.1:1080" -t mysql .

该句就是在squirrel的readme教的语句中加了一下代理的地址,如果不添加代理,可能会出现git clone失败的情况

6 Run

sudo docker run -it mysql

第一次可能会提示一个什么echo core > 什么路径,切换到root用户照做就行

7 查看结果

运行一段时间后ctrl+c停止,然后使用命令查看状态

sudo docker container list -a
#sudo docker ps -a

如果处于Up状态,记下容器ID,一般只需要记前四个字母,然后尝试使用命令连接至容器

sudo docker exec -it <容器ID> /bin/bash

如果处于Exited状态,则需要启动一下再进行连接

sudo docker start <容器ID>

连上后,首先需要知道输出结果保存在哪,如果前面dockerfile未进行过多改动,是直接复制的原版仓库的话,根据Squirrel/scripts/utils/run.py,输出应该是在/tmp/fuzz中

此时查看该目录可以看到两个编号,其中一个是正在运行的输出,可以通过多次查看文件大小来判断哪一个是正在跑的

确定好编号后,在容器外使用命令:

sudo docker cp <容器ID>:/tmp/fuzz <本地路径>

拷贝内容到本地

8 可视化

可使用afl++中自带的一个可视化工具afl-plot进行查看

afl-plot <待分析目录> <输出目录>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值