小研究 - 基于解析树的 Java Web 灰盒模糊测试(一)
由于 Java Web 应用业务场景复杂, 且对输入数据的结构有效性要求较高, 现有的测试方法和工具在测试Java Web 时存在测试用例的有效率较低的问题. 为了解决上述问题, 本文提出了基于解析树的 Java Web 应用灰盒模糊测试方法. 首先为 Java Web 应用程序的输入数据包进行语法建模创建解析树, 区分分隔符和数据块, 并为解析树中每一个叶子结点挂接一个种子池, 隔离测试用例的单个数据块, 通过数据包拼接生成符合 Java Web 应用业务格式的输入, 从而提高测试用例的有效率; 为了保留高质量的数据块, 在测试期间根据测试程序的执行反馈信息, 为每个数据块种子单独赋予权值; 为了突破深度路径, 会在相应种子池中基于条件概率学习提取数据块种子特征. 本文实现了基于解析树的 Java Web 应用灰盒模糊测试系统 PTreeFuzz, 测试结果表明, 该系统相较于现有工具取得了更好的测试准确率.
目录
1 相关工作
2 系统设计
1 相关工作
模糊测试是一种有效的动态漏洞挖掘方法, 按种子的生成策略可分为基于变异的模糊测试和基于生成的模糊测试. 本文按应用场景将目前模糊测试工作分类为针对 Java Web 应用的模糊测试以及非 Java Web场景下的模糊测试, 分别进行介绍.
目前针对 Java Web 应用进行模糊测试的优化工作主要是分析 Web 应用系统或者漏洞特征, 通过灰盒反馈信息优化测试用例生成. Dos Santos 等人设计了浏览器插件 Selenium, 驱动浏览器实现 Java Web 的模糊测试, 需要录制用户操作并回放生成测试用例, 因此随机性不足, 难以有效发现系统异常和漏洞. 张羿辰使用白盒模糊测试技术对 Web 应用进行调用关系的代码属性图分析指导模糊测试, 但其对 Web 场景下种子的变异策略设计不足, 导致产生大量的无效测试用例. 何杰等人结合 Web 前端请求和后端程序分析优化种子生成, 用来对命令注入漏洞进行挖掘. 倪萍等人通过爬取分析网页链接, 找到潜在的注入点, 使用模糊测试生成 Payload, 从而进行反射型 XSS 漏洞检测.Van-Thuan Pham设计了灰盒模糊测试工具 AFLNET,将客户端与服务端的通信流量作为初始种子, 并通过代码覆盖率优化种子. WebFuzz与 Wfuzz 是对 Web协议的模糊测试工具, 它们都要求使用者具有完备的网络知识, 熟悉 HTTP 协议分析网络报文, 因此不能满足自动化模糊测试 Java Web 应用程序的需求. 基于生成的模糊测试工具 Peach是一款通过建模生成满足特定数据结构的 Web 模糊测试工具, 但其没有考虑到代码覆盖率等反馈信息, 执行路径以及代码覆盖率受到限制, 因此难以发现有价值的漏洞.
综上, Java Web 模糊测试工具大多专注于分析系统或者漏洞特征优化模糊测试整体效果, 但缺乏在
Java Web 应用场景下提升种子语义和语法有效性的相关研究, 针对网络协议的模糊测试难以自动化地对Java Web 应用进行测试. 普通基于变异的模糊测试针对 Java Web 常见的 XML, JSON 等这一类结构性较强的传输数据格式, 难以产生符合规定的输入, 难以保证输入测试用例的有效率. 一些基于生成的模糊测试工具如 Peach 等由于缺乏代码覆盖率等反馈信息来指导模糊测试, 其测试效率也非常低下.
2 系统设计
系统核心分为两部分, Fuzzer 和位图监控模块. 客户端主要部署的是系统的模糊测试器 Fuzzer, 负责通过监控模块的反馈指导测试数据的变异, 它的功能包括: 生成解析树发送测试数据包, 计算权重, 对种子进行变异以及将种子组装成报文. 服务端部署被测试对象和系统的位图监控模块, 位图监控模块包括位图监控以及记录条件语句的链表, 指导 Fuzzer 中解析树单个叶子节点种子池的筛选, Fuzzer 根据位图监控模块反馈信息修正种子结构体. 少数种子可以执行到深度分支路径, 在模糊测试面临路径“阻塞”问题时, 需要重点关注深度分支路径, 通过分析条件语句链表, 依据条件概率提取执行深度分支种子的特征, 优化模糊测试整体效率.
相关文章:
小研究 - 基于解析树的 Java Web 灰盒模糊测试(一)
由于 Java Web 应用业务场景复杂, 且对输入数据的结构有效性要求较高, 现有的测试方法和工具在测试Java Web 时存在测试用例的有效率较低的问题. 为了解决上述问题, 本文提出了基于解析树的 Java Web 应用灰盒模糊测试方法. 首先为 Java Web 应用程序的输入数据包进行语法建模创…...
SpringBoot接手JSP项目--【JSB项目实战】
SpringBoot系列文章目录 SpringBoot知识范围-学习步骤【JSB系列之000】 文章目录 SpringBoot系列文章目录[TOC](文章目录) SpringBoot技术很多很多工作之初,面临JSP的老项目我要怎么办环境及工具:项目里可能要用到的技术JSPjstl其它的必要知识 上代码WE…...
Python模块psycopg2连接postgresql
目录 1. 基础语法 2. 基础用法 3. 多条SQL 4. 事务SQL 1. 基础语法 语法 psycopg2.connect(dsn #指定连接参数。可以使用参数形式或 DSN 形式指定。host #指定连接数据库的主机名。dbname #指定数据库名。user #指定连接数据库使用的用户名。…...
Kotlin基础(八):泛型
前言 本文主要讲解kotlin泛型,主要包括泛型基础,类型变异,类型投射,星号投射,泛型函数,泛型约束,泛型在Android中的使用。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 目录 1.1 泛型基…...
Java学习笔记——(10)环境变量path配置及其作用
环境变量的作用为了在 Dos 的任务目录,可以去使用 javac 和 java开发工具命令 先配置 JAVA_HOME 指向 jdk 安装的主目录(避免开发中出现问题) 编辑 path 环境变量(开发环境),增加 %JAVA_HOME%\bin 编辑 path 环境变量(运行环境…...
【图像去噪】基于进化算法——自组织迁移算法(SOMA)的图像去噪研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
TMS WEB Core Crack,TMS软件Delphi组件RADical Web
TMS WEB Core Crack,TMS软件Delphi组件RADical Web 使用我们的现代web应用程序框架,可以节省宝贵的时间并创造丰富的用户体验。我们所有的工具都由经验丰富的开发人员组成的专门团队提供支持。您可以信赖卓越的服务、活跃的社区和我们不断的创新。TMS Software是您的…...
PHP使用Redis实战实录4:单例模式和面向过程操作redis的语法
PHP使用Redis实战实录系列 PHP使用Redis实战实录1:宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案PHP使用Redis实战实录3:数据类型比较、大小限制和性能扩展PHP使用Re…...
解决:移动端H5的<video>初始化拿不到总时长
移动端 在<video>的初始化后,会调用如下事件。 canplay"canplay" 解决方案:<video>添加自动播放属性: autoplay"autoplay" 然后这个方法里,用js在0.01秒后主动关闭播放,接着在0.…...
百度云上传身份证获取身份信息封装
1.目录结构 -script_discerm ------------包 -discerm.py --------------主要逻辑 -__init__.py -id_care---------------文件夹 存放图片 2.安装模块 pip install urllib31.23 pip install requests pip install base64 3.各文件内容 2.1 discerm.py import jsonimpo…...
vscode 上cmake 版本过低
问题: 装了vscode中的camke插件后,报错如下: CMake 3.9 or higher is required. You are running version 3.3.2。 解决办法: 卸载掉插件的cmake。 到官网下载合适的版本,设置系统变量 然后重新下载camke tools&…...
OS-08-事件驱动:C10M是如何实现的?
08-事件驱动:C10M是如何实现的? 你好,我是陶辉。 上一讲介绍了广播与组播这种一对多通讯方式,从这一讲开始,我们回到主流的一对一通讯方式。 早些年我们谈到高并发,总是会提到C10K,这是指服务…...
mysql 主从同步排查和处理 Slave_IO、Slave_SQL
目录 查看主从是否同步 详解Slave_IO、Slave_SQL 判断主从完全同步 各个 Log_File 和 Log_Pos的关系 修复命令 查看主从是否同步 show slave status; Slave_IO_Running、Slave_SQL_Running,这两个值是Yes表示正常,No是异常 使用竖排显示…...
基于解析法和遗传算法相结合的配电网多台分布式电源降损配置(Matlab实现)
目录 1 概述 2 数学模型 2.1 问题表述 2.2 DG的最佳位置和容量(解析法) 2.3 使用 GA 进行最佳功率因数确定和 DG 分配 3 仿真结果与讨论 3.1 33 节点测试配电系统的仿真 3.2 69 节点测试配电系统仿真 4 结论 1 概述 为了使系统网损达到最低值&a…...
07mysql查询语句之子查询
#1.查询和Zlotkey相同部门的员工姓名和工资 SELECT last_name,salary FROM employees WHERE department_id IN ( SELECT department_id FROM employees WHERE last_name Zlotkey ); #2.查询工资比公司平均工资高的员工的员工号࿰…...
笙默考试管理系统-MyExamTest(22)
笙默考试管理系统-MyExamTest(22) 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 笙默考试管理系统-MyExa…...
Windows 不同方式打开的cmd/dos窗口属性配置不同
文章目录 1. 默认值(控制台窗口)属性2. "C:\Windows\System32\cmd.exe" 属性3. "命令提示符"属性4. 自定义某标题cmd窗口属性5. cmd快捷方式的属性总结 最近在写某个批处理脚本时,意外发现 Windows系统中,在不…...
性能优化-webpack配置gzip
3步搞定,实测1.3Mjs压缩到363k,体积减少70% 1.装包 yarn add compression-webpack-plugin --dev 2.配置webpack 打开config/webpack.config.js 1)在 module.exports 导出函数前面引入插件 // gzip插件 const CompressionPlugin require(&qu…...
RabbitMQ 教程 | 第3章 客户端开发向导
👨🏻💻 热爱摄影的程序员 👨🏻🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…...
基于深度学习的CCPD车牌检测系统(PyTorch+Pyside6+YOLOv5模型)
摘要:基于CCPD数据集的高精度车牌检测系统可用于日常生活中检测与定位车牌目标,利用深度学习算法可实现图片、视频、摄像头等方式的车牌目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练数据集…...
科研人必备:用浏览器插件给IEEEXplore做个‘小手术’,告别20秒加载
科研效率革命:用浏览器插件精准优化IEEEXplore访问体验 每次打开IEEEXplore文献库,那个转不停的加载图标是否让你焦躁不安?作为每天要与学术数据库打交道的科研工作者,20秒的等待时间足以打断思考流,降低工作效率。这背…...
Pixel Couplet Gen 生成效果对比分析:不同参数下的对联质量评估
Pixel Couplet Gen 生成效果对比分析:不同参数下的对联质量评估 1. 引言:当AI遇上传统对联 春节贴对联是中国延续千年的文化传统,但创作一副既工整又有新意的对联并非易事。Pixel Couplet Gen作为一款AI对联生成工具,通过调整Te…...
OpenClaw开源项目深度体验:对比其与星图GPU平台Qwen3-14B-Int4-AWQ部署差异
OpenClaw开源项目深度体验:对比其与星图GPU平台Qwen3-14B-Int4-AWQ部署差异 1. 项目概览与核心功能 OpenClaw是近期备受关注的开源大模型项目,主打轻量化和易部署特性。它采用混合专家架构(MoE),在保持模型性能的同时显著降低了计算资源需求…...
告别手动!用Python+GDAL批量处理GlobeLand30影像:下载、去黑边、镶嵌裁剪全自动
用PythonGDAL打造GlobeLand30全自动处理流水线 遥感影像处理一直是地理信息科学领域的核心工作之一。对于需要处理大范围GlobeLand30数据的科研人员和开发者来说,传统的手动操作不仅效率低下,还容易引入人为错误。想象一下,当你需要处理覆盖整…...
操作系统-lazy allocation
只有真正需要使用这些页的时候,才进行物理内存页的实际分配sbrk()在xv6操作系统中,进程的用户内存布局由代码段(text)、数据段(data)、堆区(heap)和栈区(stack)组成。sbrk()主要修改的是堆区的大小,堆在xv6中由低地址向高地址拓展。当程序调用sbrk(n)时,操作系统内核…...
AntdUI实战:用WinForm和.NET 6给老旧内部管理系统“换肤”的完整记录
AntdUI实战:用WinForm和.NET 6给老旧内部管理系统“换肤”的完整记录 当企业内部的WinForm系统运行超过十年,那些灰底蓝框的界面早已与现代审美格格不入。去年接手某制造业ERP系统改造时,我面对的是一个基于.NET Framework 4.0的"古董&q…...
零成本打造私有云盘:从PHPStudy安装到IPv6动态域名解析全攻略
零成本打造私有云盘:从PHPStudy安装到IPv6动态域名解析全攻略 在数字化时代,个人数据存储需求呈爆炸式增长。网盘限速、隐私泄露、订阅费用高昂等问题困扰着许多用户。本文将手把手教你如何利用闲置电脑和免费工具,打造一个完全由自己掌控的私…...
CHORD-X深度研究报告生成:集成MySQL进行数据存储与管理的配置指南
CHORD-X深度研究报告生成:集成MySQL进行数据存储与管理的配置指南 如果你正在使用CHORD-X这类强大的研究报告生成工具,可能会遇到一个甜蜜的烦恼:生成的内容越来越多,数据越来越杂,怎么才能把它们管得井井有条&#x…...
如何快速实现ngx-bootstrap国际化:多语言应用开发完整指南
如何快速实现ngx-bootstrap国际化:多语言应用开发完整指南 【免费下载链接】ngx-bootstrap Fast and reliable Bootstrap widgets in Angular (supports Ivy engine) 项目地址: https://gitcode.com/gh_mirrors/ng/ngx-bootstrap ngx-bootstrap作为Angular生…...
stm32cubeide+freertos+c/c++混合编程实战避坑指南
1. STM32CubeIDE与FreeRTOS环境搭建避坑指南 第一次用STM32CubeIDE配置FreeRTOS时,我对着时钟源选项纠结了半小时。后来发现这个选择直接影响系统稳定性——选错时钟源会导致任务调度像喝醉了一样飘忽不定。实测推荐用TIM6替代默认的SysTick作为时基,原因…...
