当前位置: 首页 > 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、获…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...