Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ansvif — A Not So Very Intelligent Fuzzer: 一个设计用于在C/C++代码中寻找漏洞的先进模糊测试框架。 | Kitploit
工具/GitHubGitHub/oxagast/ansvif
漏洞分析漏洞利用模糊测试渗透测试二进制分析
GitHuboxagast/ansvif

ansvif

A Not So Very Intelligent Fuzzer: 一个设计用于在C/C++代码中寻找漏洞的先进模糊测试框架。

查看仓库
10526135年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
网站
分享

ansvif

一个不太智能的模糊测试器

Marshall Whittaker

oxagast

[email protected]

随着系统复杂性的增加,该系统内出现问题的可能性也随之增加。

--惠特克定律

编译依赖:

automake autoconf-archive zlib1g-dev g++ gcc (如果要支持GTK则需要libgtk2.0-dev)

编译:

Linux:

$ aclocal && autoconf && automake -a && ./configure && make && make check

或者,如果你想使用系统调用模糊测试器:

$ aclocal && autoconf && automake -a && ./configure --enable-syscalls && make && make check

如果你想禁用GTK前端,可以执行:

$ aclocal && autoconf && automake -a && ./configure --disable-gtk && make && make check

FreeBSD

假设你从 ports 安装了 g++(因为需要 C++11):

$ aclocal && autoconf && automake -a && ./configure && make && make check

OpenBSD:

假设你从 ports 安装了 g++(因为需要 C++11):

$ CXX=$(find / -name 'eg++' 2>/dev/null | grep ports | head -n 1) AUTOCONF_VERSION=2.69 AUTOMAKE_VERSION=1.15 autoreconf -fmi

Windows:

现在 Windows 二进制文件设计为使用 MinGW-W64 编译(由于我们使用线程,请下载带有 seh 的 MinGW-W64 g++ 版本)。 安装带有 seh 的 MinGW-W64 g++ 后,你可以尝试通过点击包含的 make_win.bat 脚本来编译。如果失败,很可能是环境问题,请尝试以下步骤。

(进入 MinGW-W64 的安装目录,然后双击 mingw-64.bat)

windres metadata.rc -O coff -o metadata.res
g++.exe src/common.cpp src/bin2hex.cpp src/popen2.cpp src/main.cpp src/help.cpp src/match_fault.cpp src/sys_string.cpp src/man_read.cpp src/randomizer.cpp src/trash.cpp src/log.cpp metadata.res src/version.h -I./ -I./include -std=c++11 -lstdc++ -lpthread -O2 -o ansvif.exe -static -static-libgcc -static-libstdc++
gcc src/win/printf.c -o printf.exe

注意:不再需要 cygwin 的 .dll 外部文件,因为我们使用 MinGW 的 g++ 进行编译。 在 Windows 7 中默认安装的是 Powershell v2,但是该程序至少需要 Powershell v5。Windows 10 包含 Powershell v5。你可以前往 Microsoft 网站下载 Windows Management Framework(其中包含更高版本的 Powershell),下载地址为:

https://www.microsoft.com/en-us/download/details.aspx?id=50395

测试:

如果你想尝试示例代码,可以用以下命令编译 faulty.c:

$ gcc faulty.c -o faulty

你也可以直接运行 make check。

用法:

重要提示:Windows 用户必须从 Powershell 运行 ansvif.exe 才能正常工作!

$ ./find_suid /usr/bin/ /bin/ /sbin/
$ ./ansvif -[tm] [template/manpage] -c /path/to/executable -b buffersize

示例:

Linux/BSD:

$ ulimit -c unlimited
$ ./ansvif -m mount -c /bin/mount -e examples/mount_e.txt -x examples/mount_o.txt\
-f 8 -b 2048
$ ./ansvif -t examples/blank.txt -F tmp/tmphtml -x examples/htmltags.txt -c /usr/bin/iceweasel -b\
128 -A "file:///home/username/src/ansvif/tmp/tmphtml"  -f 2 -n -R "sleep 3 && killall\
iceweasel" -S ">"
$ cat examples/linux_syscalls_implemented.list | xargs -P \
`cat examples/linux_syscalls_implemented.list | wc -l` -I {calls} ./ansvif -t examples/space.txt \
-B "{calls} " -c ./syscalls -o syscall_crash -f 1 -z -d -b 16

Windows:

PS C:\ansvif\bin\ansvif_win> .\ansvif -t ..\..\examples\space -F ..\..\tmp\tmphtml -x `
..\..\examples\htmltags -c `
'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe' `
-b 128 -A "file:///C:\\Users\marsh\OneDrive\Documents\Code\ansvif\tmp\tmphtml" `
-f 2 -n -S ">" -R "sleep 2 ; Stop-Process -Name chrome"

选项:

ansvif

  -t 此文件应包含逐行的命令参数,如示例文件所示。
  -e 此文件应包含逐行的环境变量,如示例文件所示。
     通常可以通过类似以下方式获取:
     $ strings /bin/mount | perl -ne 'print if /[A-Z]=$/' > mount_envs
  -c 指定命令路径。
  -p 指定手册页位置(以整数表示,通常为 1 或 8)
  -m 指定命令的手册页。
  -D 转储手册页中找到的内容。
  -f 要使用的线程数。默认为 2。
  -b 指定用于模糊测试的缓冲区大小。256-2048 通常足够。
  -r 仅使用随机垃圾数据。
  -o 将输出写入日志文件。
  -z 将缓冲区大小随机化为从 1 到 -b 指定的值。
  -x 其他要放入的内容。可以在此处放置用户名等。
  -S 选项之间的分隔符。
  -s 省略的字符规范。默认值为 <>\\n |&\[]\()\{}:; 且换行符是必需的。
  -T 线程超时。
  -W 线程超时。
  -L 如果以 root 身份运行,则降权为未授权用户运行。
  -A 始终将此后面的内容附加到要运行的命令之后。
  -B 始终将此后面的内容放在要运行的命令之前。
  -F 要传入程序的文件,-x 以及常规模糊测试数据将放入此文件。
  -n 在模糊测试中从不使用随机数据。
  -R 每次模糊测试后运行此命令。
  -C 要检测的非标准错误代码。
  -V 如果安装了 Valgrind,则使用它。
  -1 尝试使其发生一次故障,如果未发生,则返回错误代码 64。适用于脚本编写。
  -P 在模糊测试中使用 % 来表示二进制数据。
  -M 在模糊测试中使用的最大参数数量。
  -y -b 0 的简写,通常仅与 -A 或 -B 一起使用。
  -K 在目标崩溃后继续模糊测试。
  -E 在模糊测试程序之前要运行的命令。
  -0 模糊测试中不包含 NULL 字符。
  -N 缩写,相当于 -R "pkill prog"。
  -v 详细输出。
  -d 调试数据。
  -h 显示帮助页面。
  -i 打印版本信息。

ansvif_gtk

  -l 快捷方式,相当于 -p ./ansvif
  -p ansvif 二进制文件的位置

建议: 建议在长时间模糊测试或文件模糊测试时,如果可能的话,将文件(如果可以,也包括正在模糊测试的二进制文件)放入内存中。这意味着将它们放在类似 /var/run/shm 的地方,以减少磁盘抖动,并且模糊测试会更快,尤其是在处理大文件时。但请注意:如果文件在 shm 中,并且你重启了机器,你的模糊测试文件将会丢失!

请勿在生产环境中运行此代码! 如果你尝试将 faulty.c 的输出设置为 suid(0),那么请在虚拟机中执行,或者至少在你不关心的机器上执行。 除此之外,尽情玩耍,享受乐趣!

注意:

Windows 用户必须从 Powershell 运行 ansvif。 Linux 和 Windows 代码应相对稳定。 Linux 下的系统调用模糊测试正在大力开发中。

感谢

感谢 dll999 提供的系统调用模糊测试思路。 感谢来自 2600net #2600 频道的 moo 对 wiki 文章提出的几条建议。 感谢 IRC 和 StackOverflow 上无数的人的帮助。 感谢 DarkSt0rm 修复了 Makefile 中的一个 bug。

下载工具