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

19、SQL注入之SQLMAP绕过WAF

目录

    • 逻辑层
      • 1、逻辑问题
      • 2、性能问题
    • 白名单
      • 方式一:IP白名单
      • 方式二:静态资源
      • 方式三:url白名单
      • 方式四: 爬虫白名单

sqlmap在测试漏洞的时候,选择了no,它就不会去测试其它的了,我们一般选择yes,为了保证正确性。因为我们也不知道它是否就真的就是那个注入点、数据库类型,或者就是那个注入类型

在攻防实战中,往往需要掌握一些特性,比如服务器、数据库、应用层、WAF层等,以便我们更灵活地去构造Payload,从而可以和各种WAF进行对抗,甚至绕过安全防御措施进行漏洞利用

逻辑层

1、逻辑问题

(1)云waf防护,一般我们会尝试通过查找站点的真实IP,从而绕过CDN防护
(2)当提交GET、POST同时请求时,进入POST逻辑,而忽略了GET请求的有害参数输入,可尝试Bypass
(3)HTTP和HTTPS同时开放服务,没有做HTTP到HTTPS的强制跳转,导致HTTPs有WAF防护,HTTP没有防护,直接访问HTTP站点绕过防护
(4)特殊符号%00,部分waf遇到%00截断,只能获取到前面的参数,无法获取到后面的有害参数输入,从而导致Bypass。比如: id=1%00and 1=2 union select1,2,column_name from information_schema.columns

2、性能问题

猜想1:在设计WAF系统时,考虑自身性能问题,当数据量达到一定层级,不检测这部分数据。只要不断的填充数据,当数据达到一定数目之后,恶意代码就不会被检测了。

猜想2:不少WAF是C语言写的,而c语言自身没有缓冲区保护机制,因此如果WAF在处理测试向量时超出了其缓冲区长度就会引发bug,从而实现统过。

例子1:
?id=1 and (select 1)=(Select0xA1000)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),
8,9
ps:0xA
1000指0xA后面"A"重复1000次,一般来说对应用软件构成缓冲区溢出都需要较大的测试长度,这里1000只做参考也许在有些情况下可能不需要这么长也能溢出。

例子2:
?a0=0&a1=1&…&a100=100&id=1 union select 1,schema_name,3 from INFORMATTON_SCHEMA.schemata
备注:获取请求参数,只获取前100个参数,第101个参数并没有获取到,导致SQL注入绕过。

白名单

方式一:IP白名单

从网络层获取的ip,这种一般伪造不来,如果是获取客户端的IP,这样就可能存在伪造IP绕过的情况。
测试方法:修改http的header来bypass waf
x-forwarded-for
x-remote-IP
x-orginating-IP
x-remote-addr
X-Real-ip

IP白名单在实战中意义不是很大,因为它的条件实在是很多,很难去满足;一个是获取IP是不是通过脚本去获取,如果是的话,可以去伪造IP,通过tcp/udp网络层方式获取的,那是没有办法伪造的

方式二:静态资源

特定的静态资源后缀请求,常见的静态文件(.js .jpg .swf .css等等),类似白名单机制,waf为了检测效率,不去检测这样一些静态文件名后缀的请求
http://10.9.9.201/sql.php?id=1
http://10.9.9.201/sql.php/1.js?id=1
备注:Aspx/php只识别到前面的.aspx/.php 后面基本不识别

有些WAF过滤是基于脚本过滤的参数,是针对脚本去过滤,针对某些其它格式就不会去过滤,比如图片格式、文本格式,因为图片格式、文本格式一般不会带参数,或者说图片格式、文本格式造成不了危害,只有脚本里面有代码,文本和图片的代码是没有什么作用的

http://10.9.9.201/sql.php/x.txt?id=1

我们这样去访问之后,网站并不会受到结果上的影响,数据还能够正常接收;waf认为注入的参数是建立在x.txt文件上面的,所以waf有可能放心这个注入,x.txt是一个很正常的文本文件,即使传参数,也不会造成很大的影响。但是网站这样子访问,参数并不是给了x.txt,而是给了.php
以前老版本的WAF可以通过这个方式直接绕过,但是现在不行了,但是我们还是要对这个东西进行了解

方式三:url白名单

正常文件涉及到敏感的操作,那我们在访问正常文件的时候,就会被拦截了,这个时候为了让正常的拦截去访问的话,它会对这个文件进行白名单设置

为了防止误拦,部分waf内置默认的白名单列表,如admin/manager/system等管理后台。只要url中存在白名单的字符串,就作为白名单不进行检测。常见的url构造姿势:
http://10.9.9.201/sql.php/admin.php?id=1
http://10.9.9.201/sgl.php?a=/manager/&b=…/etc/passwd
http://10.9.9.201/…/…/…/manager/…/sql.asp?id=2
waf通过/manage/进行比较,只要uri中存在/manage/就作为白名单不进行检测,这样我们可以通过/sql.php?a=/manage/&b=…/etc/passwd 绕过防御规则。

可以结合静态资源展开攻击,有的waf是不行的,但是我们还是要去学一下

方式四: 爬虫白名单

部分waf有提供爬虫白名单的功能,识别爬虫的技术一般有两种:
1、根据UserAgent 2、通过行为来判断
UserAgent可以很容易欺骗,我们可以伪装成爬虫尝试绕过。
User Agent Switcher (Firefox 附加组件),下载地址:https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/
这个方式不是讲注入绕过,他是讲扫描绕过,这个方式我们经常用到

我们在服务器上创建自己网站之后,那么百度、google、搜狗等搜索引擎会对我们的网站页面进行收录,在搜索相关资料的时候会请求到我们的网站上来。
爬虫白名单就是伪造搜索引擎,当我们对网站部署waf之后,我们会发现我们对网站访问速度过快、请求过多的话,会拦截

搜索引擎会对我们的网站进行爬取,因为它的收录就是对我们的网站采取爬虫技术,而且速度很快,也是符合拦截规则的,但是WAF却不会去拦截,因为WAF会去识别你这个是用户访问,还是搜索引擎爬取,所以我们可以通过数据包的伪造,伪造成搜索引擎,对目标的网站进行访问,这个时候waf肯定会放行,因为它觉得这个是搜索引擎的访问,是正常的、官方的一种收录行为,不会是用户的攻击行为

我们对网站的后台进行目录爆破,我们发现爆出了很多结果,但是我们去验证的时候,发现这些东西压根都不存在,全部是误报
这里有两类问题,一个是请求速度过快,触发了规则;一个是扫描结果是个错误
伪造成官方搜索引擎的爬虫,去对网站进行扫描,就不会触发它的规则,因为它是白名单
dirsearch 爆破后台目录的数据包的UA可以使用搜索引擎爬虫的UA

我们学习的是绕过WAF的方法,不是学习某个工具,方法最重要

/*!50001 select * from test */

这里的50001表示,假如数据库是5.00.01以上版本,该语句才会被推行,反之就不行

50001会干扰WAF的识别,但是在数据库当中会被正常执行,这种绕过方式只针对mysql

%20union%20a11%23%0a%20select%201,2,3%23

写与不写all都会执行,不会影响任何结果,但是all能够绕过匹配规则里面的union select的一个结合, 因为中间有个all
总之来说,绕过WAF的匹配就是防止他们匹配到,我们要学FUZZ的话,就需要去学写脚本

我们在实际的工作当中,不可能全部用到手工注入,肯定是要借助检测工具

sqlmap自带绕过WAF的脚本,但是这些脚本肯定是不能够绕过常见WAF的,是用来绕过CTF比赛的,因为是比赛,所以WAF不会写的很死,肯定是存在问题的,就可以用这些脚本来绕过。

因为用自带的脚本绕不了,我们只能自己去编写,可以在sqlmap脚本的基础上去改,把注释删掉便于查看。
只要在if payload这个地方换就可以了,把符合WAF匹配规则的给替换掉,例如

if payload:payload = payload.replace("union","%23a%oaunion")payload = payload.replace("select","/*!44575select*/")payload = payload.replace("%20","%23a%0a")payload = payload.replace(" ",%23a%0a")payload = payload.replace( "database()","database%23a%0a()")
return payload

我们所有的步骤都做对了,但是我们就是被拦截了,这个时候我们可以通过代理,把完整的数据包抓到BP上面去看一下,看一下数据包里面是不是有问题

WAF可以通过数据包的指纹,发现我们使用了sqlmap这个工具在搞事情,所以被拦截了,不是因为我们的绕过脚本没搞好,才被拦截的

当我们在使用工具进行检测的时候,我们首先要解决一个问题,那就是工具会不会被拦截的问题。因为每个作者在写工具的时候,都有一个初衷,他在对网站进行扫描,会有一个数据包体系,这个数据包肯定会有他的特征,比如特定的指纹头,其实就是我们常说的指纹库,通过这个指纹库,我们可以识别出他使用的工具,不同的浏览器对网站进行访问是不一样的,因为他们的内核不同,所以他可以通过这些判断出你是人为的,还是工具扫描的,从而进行拦截

sqlmap的访问量会触发WAF的CC流量拦截,这个时候,就跟我们的注入没有关系了,我们可以采取延迟、代理池,爬虫白名单三种方式绕过

搜索引擎爬虫 http 指纹头——》获取搜索引擎爬虫 http 指纹头——》sqlmap user-agent注入——》更改sqlmap的请求头,用来绕过WAF或者使用–user-agent=""来自定义
随机是模拟用户的访问,我们可以通过–user-agent来模拟搜索引擎的访问
sqlmap只要是一直在跑,那他就是正常的,只要一旦停下来,那就遇到问题了
我们可以通过刷新网站来判断我们是否被封堵

delay延迟,按照我们延迟的时间,隔一段时间,发送一个数据包。正常访问网站的时候,就会速度过快,导致被封堵,隔一秒发一个。

代理池涉及到的东西比较复杂,我们现在也讲不到,代理池就是随机刷IP,我们需要学完python的安全开发,然后再去写一个;或者我们用网上现成的工具和脚本改一下,结合sqlmap去跑一下。

只要涉及到流量检测,基本上就会用到代理池。

我们要去学开发,我们要去学Python,因为python简单容易上手,工具大都是python开发的,我们可以直接拿别人的工具二次开发,也可以直接用Python写二次开发,现在的安全形式,如果你不懂代码那是不行的

中转脚本,本地写个脚本(请求远程地址数据包可以自定义编写),这个脚本去请求远程注入地址,sqlmap去注入本地的脚本地址

<?php
$url='http://xxxx/job_bystjb/yjs_byszjs.asp?id=';
$payload=base64_encode($_GET['x']);
echo $payload;
$urs=$ur1.$payload;
file_get _contents($urls);
echo $urls;
?>

php发送http请求的几种方法

https://blog.csdn.net/qq_34827048/article/details/78892700

绕过waf不是单纯的,除了技术上的,还可能是因为检测工具的原因;出了问题要去抓包看看,不要一直在代码上面找问题;分析是很重要的,那些绕过的方法,网上去找资料,多试几遍,用fuzz就完了。

相关文章:

19、SQL注入之SQLMAP绕过WAF

目录 逻辑层1、逻辑问题2、性能问题 白名单方式一&#xff1a;IP白名单方式二&#xff1a;静态资源方式三&#xff1a;url白名单方式四: 爬虫白名单 sqlmap在测试漏洞的时候&#xff0c;选择了no&#xff0c;它就不会去测试其它的了&#xff0c;我们一般选择yes&#xff0c;为了…...

Redis对象类型和结构、内存回收、对象共享

对象类型和结构 在Redis中&#xff0c;无论是键key还是值value都是一个对象&#xff0c;每次对Redis数据库创建一个新的键值对时&#xff0c;就至少会创建两个对象。 常见的对象类型有&#xff1a; 字符串列表哈希集合有序集合 这些对象在Redis中统一用一个结构体redisObjec…...

标准模板库STL——容器适配器-stack/queue/priority_queue

目录 容器适配器的理解 容器适配器的实现与使用 三类容器适配器 基本概述 示例代码 容器适配器的理解 容器适配器对底层容器进行封装&#xff0c;不具备自己的数据结构 容器适配器的方法全都由底层容器实现&#xff0c;不支持迭代器 容器适配器的实现与使用 // 容器适配器…...

Golang实现完整聊天室(内附源码)

项目github地址&#xff1a; 由于我们项目的需要&#xff0c;我就研究了一下关于websocket的相关内容&#xff0c;去实现一个聊天室的功能。 经过几天的探索&#xff0c;现在使用Gin框架实现了一个完整的聊天室消息实时通知系统。有什么不完善的地方还请大佬指正。 用到的技术…...

WSL2 ubuntu子系统OpenCV调用本机摄像头的RTSP视频流做开发测试

文章目录 前言一、Ubuntu安装opencv库二、启动 Windows 本机的 RTSP 视频流下载解压 EasyDarwin查看本机摄像头设备开始推流 三、在ubuntu 终端编写代码创建目录及文件创建CMakeLists.txt文件启动 cmake 配置并构建 四、结果展示启动图形界面在图形界面打开终端找到 rtsp_demo运…...

20230814让惠普(HP)锐14 新AMD锐龙电脑不联网进WIN11进系统

20230814让惠普(HP)锐14 新AMD锐龙电脑不联网进WIN11进系统 2023/8/14 17:19 win11系统无法跳过联网 https://www.xpwin7.com/jiaocheng/28499.html Win11开机联网跳过不了怎么办&#xff1f;Win11开机联网跳过不了解决方法 Win11开机联网跳过不了怎么办&#xff1f;Win11开机…...

基于ScrollView的下拉刷新

基于ScrollView的下拉刷新 组件使用 组件 import React, {useState} from react; import {ScrollView, RefreshControl, Platform} from react-native;const RefreshComponent ({children, onRefresh, onScroll}) > {const [refreshing, setRefreshing] useState(false);…...

强训第31天

选择 传输层叫段 网络层叫包 链路层叫帧 A 2^16-2 C D C 70都没收到&#xff0c;确认号代表你该从这个号开始发给我了&#xff0c;所以发70而不是71 B D C 248&123120 OSI 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 C 记一下304读取浏览器缓存 502错误网关 编…...

什么是Java中的策略模式?

Java中的策略模式是一种行为设计模式&#xff0c;它允许您在不改变客户端代码的情况下&#xff0c;在运行时动态地切换行为。这是一种非常有用的模式&#xff0c;因为它允许您在运行时根据需要更改算法或行为。 策略模式通常涉及到一个或多个策略类&#xff0c;每个策略类都实…...

【Visual Studio Code】--- Win11 安装 VS Code 超详细

Win11 安装 VS Code 超详细 概述一、下载 Vscode二、安装 Vscode 概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径&#xff0c;学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 一、下载 Vscode Vscode官网 二、…...

每天一道leetcode:797. 所有可能的路径(图论中等深度优先遍历)

今日份题目&#xff1a; 给你一个有 n 个节点的 有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不要求按特定顺序&#xff09; graph[i] 是一个从节点 i 可以访问的所有节点的列表&#xff08;即从节点 i 到节…...

创建预留成本中心与指定工厂不一致

创建预留成本中心与指定工厂不一致 这种情况SAP会警告提示&#xff0c;可以强制通过。 如果公司不允许跨公司领料&#xff0c;可以将消息号 M7517的类型从W改为为E tcode&#xff1a;OMCQ SPRO->物料管理->库存管理和实际库存->定义系统消息的属性->系统信息设置...

SCF金融公链新加坡启动会 创新驱动未来

新加坡迎来一场引人瞩目的金融科技盛会&#xff0c;SCF金融公链启动会于2023年8月13日盛大举行。这一受瞩目的活动将为金融科技领域注入新的活力&#xff0c;并为广大投资者、合作伙伴以及关注区块链发展的人士提供一个难得的交流平台。 在SCF金融公链启动会上&#xff0c; Wil…...

希尔排序【Java算法】

文章目录 1. 概念2. 思路3. 代码实现 1. 概念 希尔排序也是一种插入排序&#xff0c;它是简单插入排序经过改进之后的一个更高效的版本&#xff0c;也称为缩小增量排序。希尔排序在数组中采用跳跃式分组的策略&#xff0c;通过某个增量将数组元素划分为若干组&#xff0c;然后分…...

互联网发展历程:从布线到无线,AC/AP的崭新时代

互联网的发展&#xff0c;一直在追求更便捷、更灵活的连接方式。在网络的早期&#xff0c;布线问题常常让人头疼。一项革命性的技术应运而生&#xff0c;那就是“无线AC/AP”。 布线问题的烦恼&#xff1a;繁琐的布线 早期网络的布线工作常常耗费时间和精力&#xff0c;尤其在大…...

Vue3 Axios网络请求简单应用

cd 到项目 安装Axios&#xff1a;cnpm install --save axios post传递参数 需要安装querystring 用于转换参数格式&#xff1a;cnpm install --save querystring 运行示例&#xff1a; 后台接口&#xff1a; GetTestData.java package com.csdnts.api;import java.io.IOExce…...

day-18 代码随想录算法训练营(19)二叉树 part05

513.找树左下角的值 思路一&#xff1a;层序遍历&#xff0c;每一层判断是不是最后一层&#xff0c;是的话直接返回第一个; 如何判断是不是最后一层呢&#xff0c;首先队列头部&#xff0c;其次记录左右子节点都没有的节点数是不是等于que.size()&#xff1b;或…...

【数据结构OJ题】移除链表元素

原题链接&#xff1a;https://leetcode.cn/problems/remove-linked-list-elements/description/ 1. 题目描述 2. 思路分析 我们可以定义一个结构体指针变量cur&#xff0c;让cur一开始指向头结点&#xff0c;同时定义一个结构体指针prev&#xff0c;令prev初始化为空指针NULL…...

centos 安装 virtualbox

参考 https://phoenixnap.com/kb/how-to-install-virtualbox-centos-7 遇到 Gpg Keys Failue 这样解决 将 rpm 包下载到本地 –disablerepovirtualbox sudo yum --disablerepovirtualbox localinstall VirtualBox-7.0-7.0.10_158379_el7-1.x86_64 failure: repodata/repomd…...

Java8之Optional类的基本使用

文章目录 一、简介二、常见的Optional用法&#xff1a;1、创建Optional对象&#xff1a;1.1 使用of()方法&#xff1a;1.2 使用ofNullable()方法&#xff1a;1.3 使用empty()方法&#xff1a; 2、判断Optional是否包含值&#xff1a;2.1 使用isPresent()方法&#xff1a; 3、获…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...