怎么在企查查网站做企业认证小生意创业项目
2026/1/7 23:27:10 网站建设 项目流程
怎么在企查查网站做企业认证,小生意创业项目,织梦怎么做网站,wordpress图文并排本次实验要求是在两个模糊测试工具#xff08;AFL和Syzkaller#xff09;中选择一款工具进行使用#xff0c;进行模糊测试。本次我选择的是AFL#xff08;AFL plus plus#xff09;。 一、AFL介绍 1.AFL安装 我是在ubuntu20.04版本#xff08;wsl2#xff09;进行配置…本次实验要求是在两个模糊测试工具AFL和Syzkaller中选择一款工具进行使用进行模糊测试。本次我选择的是AFLAFL plus plus。一、AFL介绍1.AFL安装我是在ubuntu20.04版本wsl2进行配置的准备好需要的基础配件如果有配件不存在就install即可在Github上下载AFLAFL下载地址进行make编译核心组件之后sudo make install可能出现的错误可能会出现涉及LLVM和Clang的插件无法编译只需要先配置好LLVM和Clang然后再尝试编译即可。2.工作流程AFLFuzz可以分成4个阶段插桩阶段、准备阶段、执行阶段、验证阶段a插桩阶段这部分是在目标程序中进行插桩记录程序的执行路径为后续的变异和筛选做准备插桩可以分成两种方式源码插桩使用AFL提供的编译器如afl-gcc-fast/afl-g-fast/afl-clang-fast代替我们常规的gcc/clang等编译器。可以选用高级插桩选项如使用ASAN能搭配检测内存漏洞二进制插桩无源码时可以使用借助如afl-qemu-trace对目标二进制程序进行插桩借助qemu获取程序执行路径b准备阶段准备测试环境和初始测试的种子seed。种子可以保存在input目录在选取时需要覆盖目标程序的核心功能如测试SQL语句则种子需要包含SELECT/INSERT等基础语法输出保存在output目录在配置环境时我们可以选取运行参数-t设置超时时间避免卡死、-m设置内存限制防止溢出、-d调试c执行阶段该部分是AFL的核心部分变异器加载和初始化该部分是自定义变异器加载从环境变量中读取变异器使用“”作为分隔符加载多个变异器如果无分隔符单个变异器就直接加载有分隔符就循环切割加载每个变异器这里调用了load_custom_mutator函数进行了动态库加载、符号解析、初始化变异器操作变异阶段该部分主要可以查看fuzz_one_original函数整体执行流程确定性变异·位翻转Bitflip该部分是1位翻转翻转目标缓冲区_ar中第_b个比特的位置首先将缓冲区指针转为字节数组然后计算_b所在的字节索引1字节是8比特所以进行了_bf3偏移量是(_bf 7)相当于对8取模然后通过异或操作进行翻转。后续使用翻转第stage_cur位然后执行变异用例并记录结果恢复原始值进行下一次翻转多位的翻转逻辑类似不赘述·算数运算Arithmetic单字节8位的运算逻辑加法变异和减法变异先通过异或结果判断是否可以通过位翻转实现翻转不能实现非连续的比特翻转和超过4但是不是8/16/32等比特数的翻转或是8/16/32比特翻转但是字节未对齐这些情况都要使用算数运算进行变异如果不能通过翻转实现就进行加法、减法变异。后续还有16位和32位的变异逻辑类似但添加了大端法和小端法的不同计算不过也不赘述。·有趣值替换Interesting Values单字节8位逻辑如果替换结果可以通过位翻转或算数运算实现则跳过不能的话就将out_buf[i]的值替换为新值进行测试之后恢复原始值。16位和32位基本同理也是增加了大端法和小端法·字典替换Dictionary使用预设的字典user extras或自动生成字典auto extras替换输入的对应位置其中user extras是存储在afl-extras中的令牌auto extras是AFL在模糊测试过程中自动检测的有效令牌。两种字典都包括data和len两个属性。两种操作方式覆盖Overwrite和插入Insert◦覆盖以用户字典为例对每个位置进行遍历遍历每个用户字典条目需要满足长度适配非重复替换覆盖有效即对路径有影响的部分之后使用afl-extras中的数据进行覆盖测试是否存在新路径然后恢复原始数据。◦插入以自动字典为例在执行上述操作前还进行了ex_tmp afl_realloc(AFL_BUF_PARAM(ex), len MAX_DICT_FILE);操作分配足够大的空间存储插入后的输入遍历每个插入位置包括首位和每个自动字典的数据过滤掉插入后会溢出的情况构造新输入i处插入令牌j执行测试后检查恢复。随机变异·随机混沌变异Random Havoc在所有确定性变异阶段位翻转、算术运算、字典变异完成后且未触发退出的情况下可以进入Havoc该阶段会进行多种随机选择的变异操作。·变异策略选择afl-fuzz_mode模糊模式0是探索模式优先发现新路径扩大测试范围在前期使用非0是利用模式重点关注能否触发崩溃和发现漏洞afl-input_mode输入类型◦文本输入探索模式使用binary_array二进制变异数组利用模式使用text_array文本变异数组◦二进制输入探索模式使用mutation_strategy_exploration_binary二进制探索策略数组利用模式使用mutation_strategy_exploitation_binary二进制利用策略数组◦默认默认与文本输入一致·Havoc还有子操作交叉变异Splicing:Splicing可以将两个不同的输入样本进行随机位置拼接得到新样本但对于一些格式较强的输入拼接后格式可能非法。d验证阶段AFL会基于执行结果反馈动态调整变异策略会监控执行状态、检查覆盖率corpus、触发的crash数量还有hangs是指挂起或阻塞的用例。仔细观察还能发现now trying会出现trim操作即对用例进行优化比如删除冗余内容;和quick eff对实时数据的利用率进行测试出现hang也会触发如图在运行一段时间达到瓶颈期如长时间没有新路径覆盖或长时间没有漏洞发现我们可以对output中的用例进行分析验证是否为可复现的漏洞。二、初步使用我对fuzzing book的cgi程序进行了测试1.源码文件运行结果结果发现了14种漏洞查看其中的一条输入使用gdb发现错误是访问越界了并且出现在源码的25行即s[i2]注意这里使用的是od -c建议使用hexdump - C查看可以发现这种错误是%后虽然有足够的输入但是后面紧跟着的\0使得数组提前终止了所以在访问s[i2]时会出现错误。这里为什么是sig06是因为我在测试这个的时候使用了-fsanitizeaddress参数触发越界后ASAN会调用abort触发信号6如果我们希望避免这些无效字符产生的crash可以尝试从三个角度进行修改修改目标程序在程序中过滤无效字符输入、修改AFL的有趣值表和Havoc阶段的随机生成逻辑、自定义变异数组添加一个针对cgi程序的编译数组将上面提到的选择策略中的逻辑替换为选择我们的自定义数组由于后两种都需要对AFL源码进行操作在测试其他程序时又需要重复修改故可以选择最简单的第一种修改方法添加一个检查是否有效字符的逻辑在while循环内部开头添加发现是不合法字符就提前return避免触发crash并且根据我们上述分析触发无效字符时路径固定在27行退出这会使得AFL在变异时为了触发更多的路径而减少无效字符的输入。注意源码依旧还存在Invalid encoding这个错误所以依旧会出现crash%后两位的编码不符合要求我们也进行修改重新进行测试注意如果编译时不添加-fsanitizeaddress会很难触发程序可能尽管出现了越界行为但是由于是进行读操作目标地址越界可能也不会崩溃运行后很轻松得到发现%后可能不存在两个字符的漏洞2.二进制文件同样是针对这个程序我们尝试借助qemu进行二进制插桩需要重新编译执行使用-Q通过qemu进行插桩如果爆出这样的错误可以查看我们下载的源码中qemu_mode中的README.md使用其自带的编译脚本./build_qemu_support.sh进行下载、配置和编译QEMU我第一次运行还出现了缺少Meson这里要求0.55.0版本我们也下载就好了之后重新执行./build_qemu_support.sh弹出All done for qemu_mode,enjoy!后再使用sudo make install将工具安装到全局即可重新执行同理运行如图如果需要使用QEMU执行二进制程序测试崩溃样例可以使用afl_qemu_trace工具cat output/default/crashes/崩溃用例文件名 | afl-qemu-trace ./test当然用gdb调试也是可以的。三、实战libxml2是一个开源的XML解析和操作类库可以对XML数据进行处理尝试挖掘libxml2的漏洞1.准备libxml2在直接运行脚本的时候出现automake的版本过低可以手动下载automake新版本的源码wget https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.gz解压缩并编译安装现在版本符合要求了重新运行脚本禁用共享库启用ASANexport AFL_USE_ASAN1make2.xmllint工具初始化在当前目录我们可以找到这个工具我们进行初始化此时fuzz目录fuzz/in目录3.启动接着可以直接启动/mnt/f/afl_experiment/AFLplusplus/afl-fuzz -i in/ -o out -m none -d -- ./xmllint_cov -m none可以避免程序因内存占用高被误杀-d可以加速变异我们开启了ASAN为了精准捕获内存漏洞。前面的AFL路径需要替换这个命令是对./xmllint进行测试xmllint是libxml2的XML解析命令行工具如果想看见明确漏洞结果可以尝试克隆旧版本的libxml2git clone https://gitlab.gnome.org/GNOME/libxml2.git libxml2-2.9.0操作跟上面基本一致4.结果分析在运行接近20小时后保存了231条crashes由于可能存在重复的情况我们可以使用afl_cmin进行去重。可以初步缩减成178条之后我们可以对数据进一步处理了解漏洞触发的类型写一个脚本文件我运行的结果可以发现都是高危的堆缓冲区越界可以随机选择一个查看属于读溢出程序试图读取超过堆缓冲区边界的1个字节数据。发生在parser.c文件的xmlParseCharDataComplex函数中用于解析XML中的字符数据/文本内容查看源码可以发现在处理时while循环并没有对buf进行判断并且处理逻辑是先进行COPY_BUF再进行校验故会出现溢出现象。可以进行修复将COPY_BUF操作移动到校验行为以后即可重新编译make clean make CCafl-gcc-fast CXXafl-g-fast LDafl-gcc-fast -j$(nproc)测试刚刚的用例只出现了语法错误ASAN的内存漏洞已经完全消失了

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询