搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
寸_铁
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
用 Sentence Transformers v3 训练和微调嵌入模型
2
网络中常见攻击及其防御方式_smurf攻击
3
华为od机试真题:火星符号运算(Python)
4
git 克隆/拉取分支指定目录(稀疏检出)_git clone 分支个别文件夹
5
git配置gitlab报错:Clone failed: Could not create work tree dir ‘ppt_indicators‘: Permission denied
6
【计算机网络】一文带你弄懂DNS解析过程(最强详解!!)
7
Ubuntu 20.04 LTS 安装zabbix监控部署_ubuntu20.04安装zabbix
8
苹果开源iOS和macOS内核源代码 | 十一献礼_macos 和 ios 内核 xnu 可编译源代码
9
Prometheus 监控 RabbitMQ
10
用Python写个方面级情感分析系统
当前位置:
article
> 正文
SQL注入之WAF绕过注入_sql注入过waf
作者:寸_铁 | 2024-07-19 06:50:23
赞
踩
sql注入过waf
绕过WAF:
WAF防御原理:
简单来说waf就是解析http请求,检测http请求中的参数是否存在恶意的攻击行为,如果请求中的参数和waf中的规则库所匹配,那么waf则判断此条请求为攻击行为并进行阻断,反之则放行。
常见的sql注入绕过WAF了两种方法:
一种是利用waf可能存在的http协议解析缺陷来绕过waf,另外一种是利用各种方式来包装sql注入语句进行混淆来绕过waf的规则库。
数据:
1.加密解密:吧这个字符串进行加密来写。
2.编码解码:base64,md5编码解码
3.等价函数:例如mid,ascii这种,用其他的函数来取代这个函数
4.特殊符号:我们加进去一些特殊符号,数据库不会产生其他影响,举个例子我们要查一个当前用的是什么数据库,那我们select database();就可以了,我们也可以在database的前面添加一些特殊符号,比如~,!什么的都可以。
WAF是这样的,我们可以理解为是编程语言中的正则表达式,然后他将一些关键新的东西和他的字典进行匹配,如果匹配后发现,那么他就进行拦截,就比如说出现了一些关键字符我们就拦截他,没有就放过。
看这个图,我们在原本是要查询的是我们现在用的是什么数据库,语句是真确的,WAF也找到的匹配的结果,就输出我们想要的结果,但是我们在database的前面加上了一个~就出现了下面这个结果,所以我们如果输出的语句中有特殊符号就会达到绕过的这种结果,比如说上面的这个写法,~database,他就达到了绕过的结果。
绕过的前提是你这个sql语句要是一个正确是语句。
5.注释符混用:用的好可以实现和特殊符号一样的效果:MySQL的注释符:--+,#等等。
6.参数污染:
我们随便写一个php,GET形式的代码吧
<?php
$x
=
$_GET
[
'y'
];
echo
$x
;
?>
这个代码,假设我们给他传了两个数,y=1&y=2
这个时候,我们如果用的是第一个服务端处理方式的话,则会输出最后一个参数
绕过学习:
我们发现我们在爆数据库的时候,呗WAF拦截了(我们用的POST),在绕过中,有两种方式可以进行绕过,一种是更改方式,二是变异。
我们先将database()拆开试试,我们先输入一个database,我们发现他不会拦截,我们在单输入一个括号(这个写法肯定是错的,所以才不会拦截),也不会拦截。我们通过上面这个例子,我们可以发现,拦截的不是我们的database也不是我们的(),拦截的是我们database()这个整体。所以我们的思路应该是我们要让database和()拆分,但是我们不能让他影响数据库的运行,如果我们实现这个的话,我们也就可以实现绕过了。
方法:
1.我们可以实行注释符来注入:为了证明上面的这个思路,我们可以先这样,我们在database的后面加上一个其他的字母:
我们发现没有拦截,也就是说,上面的这个思路是正确的,接下来我们在试试用过滤符号,我们发现可以执行:
现在我们加一点难度:我们将提交方式改为GET,看看要怎么注入:
因为安全狗的POST保护很少,大部分都是GET保护,所以我们将他改为GET相当于提高了难度:
安全狗会自动将这些语句都给拦截掉。
我们在用一次刚刚的语句,发现也给拦截了,
我们去掉了union发现他不会拦截了,我们在去掉select,发现他也不会拦截,但是,只要这两个东西在一起使用的话,就会拦截,因为union select就是安全狗中的拦截掉的联合查询。
所以我们的绕过思路就是,不让这两个在一起,并且可以执行这个sql语句。
我们可以先按照刚刚POST的思路试试能不能成功注入,比如说我们在union和select中都加上注释符,uni/**/on /**/select 变成这样,但是这样变是错误的,我们可以把这句话放到我们的mysql中执行一下看看:
我们用这个方法发现是可以的,但是也被拦截了。
我们在换一种方法,这个方法是这样的:
(补充0A%是一个换行符号。
23%是#的意思)
我们用%23将union后面的语句过滤掉这样安全狗就检查不出后面的select,但是,问了以防万一,我们用仍以一个字母去干扰一下安全狗,然后我们在换行,再写select 1,2,3#
所以这个语句整体的写下来是这样的
正常写法:
union select 1,2,3#
猜想一:a是用于迷惑安全狗的,以防万一
union #a
->select 1,2,3#
我们换行是为了防止安全狗继续匹配,所以我们将数据写到下一行。
猜想二:#后面会被过滤掉
如果我不换行的话,这个语句就是这样写的:
union #aselect 1,2,3#
这样写的话,#号后面的全部都会被省略掉,相当于就执行了一个union
第二种思路:
补充:mysql的过滤方法有/***/,这个也是过滤的一种。
根据上面的参数污染的知识点我们可以知道一点(此服务器的版本是apache),我们可以给他两个参数,但是最终指只会输出后面的那个参数。
所以我们得到了这个写法:
这个写法我们可以这样来理解
?id=1/**&id=-1 union select 1,2,3%23*/
我们将这句话拆开变成这样的:
前半部分:?id=1/**
后半部分:id=-1 union select 1,2,3#*/
由于安全狗会扫描全部,所以我们通过/***/来将后面这个部分当作一个参数来注释掉,这样安全狗扫描的就是一个空值,所以不会被拦截。
有因为apache只会显示最后一个值,而#刚好将后面的那个*/给注释掉了,所以,我们最终得到的值是这个:
union select 1,2,3#
这样就绕过了WAF进行注入
第三种方法:
我们可以使用Fuzz
什么是Fuzz?
fuzz其实就是一种对请求参数的模糊测试,简单来说就是对一个接口的某个参数或多个参数用自定义的内容进行批量提交,根据接口返回内容来判断自定义内容参数对接口的影响。
思路:
我们举个例子:
比如说这个,他就会把这里面的某个地方当作一个字典,批量的去写脚本,比如我们在%0A这个地方来进行测试,那就会变成0b,0c,0d等等等等,生成很多种可能性,然后就会生成很多种可能性,然后我们通过分析数据包来判断看看那个一数据包时返回了正常的页面,则那个页面的那个写法我们就可以称之为绕过了WAF。
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
【wpsshop博客】
推荐阅读
article
介绍
AI
大
模型
T5
_t5
模型
核心原理...
T5
是一种由GoogleBrain提出的
模型
,通过Transformer架构将NLP任务转化为文本变换,实现预训练和微调...
赞
踩
article
关于
python
中报错
cannot
import
name
xxx from xxx...
我遇到的原因有:模块名/导入的对象名因为粗心打错了,所以无法导入。如果没有动过底层的源码,那就是
python
解释器的版本...
赞
踩
article
springboot
实现
SSE
之
牛刀小试
_
springboot
sse...
SSE
全称Server Sent Event,直译一下就是服务器发送事件。其最大的特点,可以简单概况为两个:长连接,服...
赞
踩
article
Broken
PipeError: [Errno
32
]
Broken
pipe
解决办法...
在多进程环境中,对象需要在进程之间序列化和传输。如果遇到不可序列化的对象,可能会导致通信错误。如果你在 Jupyter ...
赞
踩
article
怎么后台
运行
jar
包...
怎么后台
运行
jar
包1.后台
运行
jar
包[root@slaver5 testshanghai]# nohup java ...
赞
踩
article
href
=
javascript
显示
开发
中_get这份
PRD
文档
写作
说明
,让你有底气怼
开发
...
你是否有过因为
PRD
文档
写得不够好,而被
开发
怼的经历呢?这里一份详细的
PRD
文档
写作
说明
,get这份
说明
,你的
开发
过程将...
赞
踩
article
做词云时报错
cannot
import
name
‘WordCloud‘
from
partiall...
问题:在做词云时,运行时出现该问题,
wordcloud
安装成功,但运行出错,错误提示是:
cannot
import
na...
赞
踩
article
unraid
下
nextcloud
的
偏保姆级搭建教程
_
unraid
nextcloud
...
今晚,决定来写一
下
nextcloud
的
搭建教程,重新把自己
的
小服务器上面
的
相关服务删除掉,重新重头开始,截图纪念一
下
...
赞
踩
article
SpringBoot
实现
SSE
服务器发送
事件_springboot
sse
...
SSE
全称,直译一下就是
服务器发送
事件,一般的项目开发中,用到的机会不多,可能很多小伙伴不太清楚这个东西,到底是干啥的...
赞
踩
article
ubuntu22
pycharm
,
cuda
,
cudnn
,
tensorrt
的安装_
ubuntu22
c...
哈哈哈_
ubuntu22
cuda
cudnn
pytorch
ubuntu22
cuda
cudnn
pytorch
...
赞
踩
article
(简直神器)体验丝滑
翻译
网页:
Open
AI
ChatGPT
x 沉浸式
翻译
_
chrome
网页
翻译
插...
本文介绍了一款利用
Open
AI
ChatGPT
的Chrome
插件
,能实现在网页上原位
翻译
,提供流畅且质量较高的
翻译
体验,包...
赞
踩
article
Keras
笔记
(
二
)
_
输入
单通道
预训练
模型
...
3.概念数据格式目前主要有两种方式来表示张量:a) th模式或channels
_
first模式,Theano和caffe...
赞
踩
article
Spring
boot
高频
面试题
及
答案
,
面试官看完也得跪!_spring
boot
常见
面试题
...
当然这只是一个建议的组合
,
单纯从技术上来说
,
无论怎么组合
,
都是没有问题的。基于依赖注入原则的外化配置的好处已被证明。_s...
赞
踩
article
部署
Sonarqube
并使用
Jenkins
集成_
jenkins
配置
sonarqube
...
Jenkins
集成SonarQube_
jenkins
配置
sonarqube
jenkins
配置
sonarqube
...
赞
踩
article
github
+
jenkins
+
maven
+
docker
自动化构建
部署
_jmh
服务器
部署
...
前言传统的开发、测试、
部署
方式,是由开发人员本机或打包机进行打包,将war包提交给测试人员
部署
,测试通过后,再由实施人员...
赞
踩
article
【报错】ImportError:
cannot
import
name
‘
utils
‘
from
p...
原因:
import
文件时引到同文件夹中的
highway
_env中了。解决方法:将同文件夹中名为
highway
_env的文...
赞
踩
article
Java
-
网络
编程(
UDP
/
TCP
)_
java
tcp
...
当一台计算机要与另一台计算机通信时,需要知道另外一台计算机的地址.互联网协议(Internet Protocol ,IP...
赞
踩
article
YOLOv5
-6.x源码分析(六)
----
数据
集创建之
dataloaders
.
py
_
yolov5
...
这个文件主要是创建
数据
集+各种
数据
增强操作。
YOLOv5
-6.x源码分析 全流程记录# 当image
_
weights=F...
赞
踩
article
【踩坑记录】基于
wsl2
环境
部署
fastapi
封装的服务_
fastapi
打包
部署
到windo...
要求封装一个图片上色的api接口,接口的输入为一张黑白图,返回的结果是一张对灰度图片进行染色后的图片现在很多开源项目可能...
赞
踩
article
【
HarmonyOS
学习】
Calendar
Kit
日历
管理...
Calendar
Kit
为用户提供了一系列接口来获取
日历
账户,并使用特定的接口向
日历
账户中写入日程。如果写入的日程带有提...
赞
踩
相关标签
T5
ai
AI编程
python
spring boot
SSE
深度学习
pytorch
jar
java
linux
href=javascript 显示开发中
nextcloud
unraid
mysql
websocket
pycharm
ide
chatgpt
人工智能
自动翻译
OpenAI
后端