技术分享 | 记一次Bypass SQL 注入

前言

最近在学习怎么绕WAF,遇到某网站的登录框存在注入,我们现在来看一下。
在这里插入图片描述

0x01判断注入点

使用burp进行抓包,发送到repeater模式,对数据包进行重放。

正常请求
在这里插入图片描述

一个单引号
在这里插入图片描述

两个单引号
在这里插入图片描述

三个、四个、……呈现周期性的变化,说明此时后端数据库可直接识别用户输入的单引号 (程序未对用户输入的数据进行过滤、或过滤不严导致用户数据被后端数据库当作代码执行)。

0x02 Bypass过程

构造可行的轮子,方便后续变形:admin’) or (‘a’='a) #
在这里插入图片描述
阿这,居然有WAF,接下来开始绕WAF之旅

这个时候我们猜测一下拦截了哪些字符

1)、括号()

2)、or

3)、空格

4)、=

然后便进行尝试,首先尝试发送 or 看是否被拦截
逐个发送进行尝试,发现都没有被拦截
在这里插入图片描述
但是只要用 = 与其他字符连接就会被拦截
在这里插入图片描述
尝试使用select ,发现没有被过滤
在这里插入图片描述
构造POC:admin’) or (select+1=1)

发现为真时返回-2000
在这里插入图片描述
当他为假时,返回-1000
在这里插入图片描述
轮子已经构造好,接下来开始构造POC

尝试查询 user() 、database() 等内容

经过一番尝试,user()、database()、version()等等函数 都waf拦截了
在这里插入图片描述
难道是正则匹配到了user? 还是()?Fuzz ‘user’将user作为字符串进行传递测试一波

POC : admin’) or (select + ‘user’ = ‘a’)#

页面恢复正常,如果是正则匹配到user进行拦截,那么这个包应该会WAF拦截
在这里插入图片描述
POC:admin’) or (select + ‘()’ = ‘a’)#

单引号内使用(),页面也恢复正常,说明()也不会拦截
在这里插入图片描述
发现l*!jzf*/ 、 /!Ljzf/ 、/!29440user/,%0a,%0b等绕过方式,但都进行尝试了无果。那么换位思考,我不要括号行不行?
在这里插入图片描述
发现语法报错了,不能这样使用,尝试使用current_user试一下。
在这里插入图片描述
页面返回正常,接下来使用 _ 和 like 进行模糊查询 。

使用_ 代表一个字符去跑 ,得到current_user的长度为:6位

POC:admin’) or (select + current_user+like+’__’)
在这里插入图片描述
接下来发送到Intruder模块去进行爆破
在这里插入图片描述
在这里插入图片描述

因为其中有一个%,不是特别确定,接下来使用 = 去验证一下
在这里插入图片描述
发现返回-2000

最终成功爆出用户名,提交,完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值