鹦鹉螺是一款什么工具

  介绍

这篇文章给大家分享的是有关鹦鹉螺是一款什么工具的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Nautilus介绍

鹦鹉螺是一款基于覆盖指引和语法的反馈式模糊测试工具,广大研究人员可以使用Nautilus来提升模糊测试过程中的测试覆盖率,以寻找到更多的安全漏洞。在鹦鹉螺的帮助下,研究人员可以通过指定半有效的输入语法,来执行更加复杂的变异操作,并生成更多有效的测试用例。

目前,鹦鹉螺已发布了2.0版本,该版本相较于鹦鹉螺原型,引入了很多功能性提升,目前该工具已经100%的支持AFL + +了。除了稳定性和可用性提升之外,还包括下列功能提升:

<李>

支持AFL-Qemu模式

<李>

支持Python格式语法

<李>

支持使用Python脚本生成结构化输入

<李>

支持指定源码协议/格式

<李>

支持指定正则表达式

<李>

避免生成相似的短输入

<李>

提供了更好的错误输出

<李>

修复大量错误

Nautilus工作机制

我们可以使用类似EXPR→EXPR + EXPR EXPR→NUM和NUM→1这样的规则来指定一个语法。针对这些规则,模糊测试器将构建一个树状结构,这种内部语法表达允许支持更加复杂的变异操作。接下来,这个树状结构将会转变为针对目标应用程序的真实输入,即拼接所有的叶子节点。在下方给出的示例中,左子树将会被解析为“=1 + 2”,右子树则为“=1 + 1 + 1 + 2”。为了提高语法的表达能力,鹦鹉螺还可以允许广大研究人员使用Python脚本来实现对树状结构的解析,以支持更加复杂的操作。

, 鹦鹉螺是一款什么工具

工具安装,配置

首先,广大用户需要使用下列命令将该项目源码克隆至本地,并进行基础配置:

 git  clone  & # 39; git@github.com: nautilus-fuzz/nautilus.git& # 39;
  
  cd 鹦鹉螺/道路//AFLplusplus/afl-clang-fast  test.c  -o  test  # afl-clang-fast  as  provided  by  AFL 

接下来,我们需要在config.ron文件中设置好所有需要使用的参数:

 cargo  run ——release ——, -g 语法/grammar_py_example.py  -o /tmp/workdir ,,。/test  @@ 

如果想要使用QEMU模式的话,可以运行下列命令:

 cargo  run /道路//AFLplusplus/afl-qemu-trace ,,。/test_bin  @@ 

工具使用样例

在这里,我们可以使用Python来生成一个语法,并生成一个有效的类XML输入。需要注意的是,Python脚本的语法规则,这里必须确保匹配起始标签:

 # ctx.rule (NONTERM:字符串,RHS:,字符串|字节),adds  a  rule  NONTERM→RHS只还要use 我方表示歉意{NONTERM},拷贝,RHS 用request  a 递归。
  
  ctx.rule(“时,“& lt; document> {XML_CONTENT} & lt;/document>“)
  
  ctx.rule (“XML_CONTENT"“{XML} {XML_CONTENT}“)
  
  ctx.rule (“XML_CONTENT",““)
  
  ,
  
  # ctx.script (NONTERM:字符串,,RHS: [string]],,函数),adds  a  rule  NONTERM→func (* RHS)。
  
  #,拷贝contrast 用normal ‘规则’,,RHS  is  an  array  of 非终结符。
  
  #,# 39;进行实质性s  up 用,function 用combine 从而values  returned  for 从而NONTERMINALS  with  any  fixed  content 使用。
  
  ctx.script (“XML" [“TAG",“ATTR",“XML_CONTENT"],, lambda 标签,attr,身体:,b" & lt; % s  % s> % s“%(标签,attr,身体,标签),)
  
  ctx.rule (“ATTR"“foo=bar")
  
  ctx.rule (“TAG",“some_tag")
  
  ctx.rule (“TAG",“other_tag")
  
  ,
  
  # sometimes 不要# 39;我方表示歉意t  want 用explore 从而set  of  possible  inputs 拷贝more 细节只For 例如,,if  fuzz 我方表示歉意a 脚本
  
  #翻译,,不要# 39;我方表示歉意t  want 用spend  time 提醒fuzzing  all  different  variable 名字只拷贝such  cases 还要use  Regex我方表示歉意
  
  #终端只Regex  terminals 断开连接;only  mutated  during 一代,but  not  during  normal  mutation 阶段,,saving  a  lot  of 时间。
  
  #,fuzzer  still  explores  different  values  for ,正则表达式,,but  it 赢得# 39;t  be  able 用learn  interesting  values 增量。
  
  # Use 却;能够when  incremantal  exploration  would  most  likely  waste 时间。
  
  ,
  
  ctx.regex (“TAG",“[a - z] +“) 

鹦鹉螺是一款什么工具