【SQL注入】记一次绕过WTS-WAF的SQL注入

目录

  • 前言
  • 寻找目标
  • 漏洞测试
  • WAF拦截
  • WAF绕过
  • 测字段数
  • 测回显位
  • 信息收集
  • 数据库名
  • 数据库版本
  • 获取表
  • 获取表的字段
  • 获取账户密码
  • 总结

前言

文章仅限于技术交流,所有第三方信息均已打码。

寻找目标

是时候拿出我的菜鸡语法了

inurl:php?id=1

来活了,找到了一个某检测机构的官网,进去之后页面是正常的介绍面板

【SQL注入】记一次绕过WTS-WAF的SQL注入_第1张图片

漏洞测试

在ID=1后面加一个引号就会显示报错

【SQL注入】记一次绕过WTS-WAF的SQL注入_第2张图片

这个报错居然返回了查询的sql语句,真的很良心(手动狗头)

WAF拦截

但是从上面的测试发现它对单引号进行了过滤限制,这就有点恶心了,试试and 1=2怎么样

【SQL注入】记一次绕过WTS-WAF的SQL注入_第3张图片

不出所料,WAF它来了

WAF绕过

一个WTS的WAF,试试用+绕过空格

【SQL注入】记一次绕过WTS-WAF的SQL注入_第4张图片

绕过成功,这里的公司简介已经变成一片空白了

测字段数

用+绕过之后,接下来就是用order by测字段了

【SQL注入】记一次绕过WTS-WAF的SQL注入_第5张图片

可以看到当字段为10的时候页面正常显示

在这里插入图片描述

当字段为11的时候就报错了,那就说明字段数为10

测回显位

接下来就是用union select找回显字段

【SQL注入】记一次绕过WTS-WAF的SQL注入_第6张图片

将1变成-1执行后面的联合查询,然后能看到回显位是4

信息收集

现在知道了回显位,我们就可以知道它的数据库名,版本,用户等一系列信息

version() #显示数据库当前版本
database() #显示当前数据库名
user() #显示当前用户名称
charset(str) #返回字符串str的字符集
collation(str) #返回字符串str的字符排列方式 

数据库名

用database()函数就可以爆出数据库名了

【SQL注入】记一次绕过WTS-WAF的SQL注入_第7张图片

可以看到数据库名是sztestcn

数据库版本

用version() 函数测出数据库版本

【SQL注入】记一次绕过WTS-WAF的SQL注入_第8张图片
这里我测出来是5.7.43,这样就可以使用mysql大于5.0版本中的特性来获取数据。

获取表

当我尝试使用group_concat函数时,发现又被拦截了,只能一个一个测试了
【SQL注入】记一次绕过WTS-WAF的SQL注入_第9张图片
返回的第一个表就是之前看到的表
【SQL注入】记一次绕过WTS-WAF的SQL注入_第10张图片

然后我继续找,发现了这个
【SQL注入】记一次绕过WTS-WAF的SQL注入_第11张图片
看到这个表后直接眼前一亮,必须搞点东西出来(手动狗头)

获取表的字段

当我尝试获取列的时候发现

在这里插入图片描述
它报错了,原因是后面zequn_cn_admin这个表要加引号,不加引号就会将它当成一个列,然后就会报错找不到这个列,但是因为它对引号进行了过滤,所以加引号就会发生这样

在这里插入图片描述
暂时没找到绕过引号的方法,那就盲猜一波,这种表通常应该就是username,password这两个字段了

获取账户密码

果然,猜中了,回显出账户

【SQL注入】记一次绕过WTS-WAF的SQL注入_第12张图片

然后是密码

【SQL注入】记一次绕过WTS-WAF的SQL注入_第13张图片

md5加密过的,找某个md5解密的网站解密一下就出来了,是个弱口令

最后

当我揣着管理员的账号密码满心欢喜的找后台时我发现,md,管理后台这个模块被删了,小破站,啥也不是!

总结

网安只图一乐!

不说了,还有两袋水泥没抗,再不干活老板又要扣我工资了

【SQL注入】记一次绕过WTS-WAF的SQL注入_第14张图片

你可能感兴趣的:(sql注入,sql,数据库,服务器,网络安全)