渗透测试系列|SQL注进
一、 因
背景:有位大佬跟我说,某个网站存在SQL注进,但是可能存在waf,需要帮忙验证一下。(漏扫扫出来的)
拿到url链接之后,开始了各种尝试,什么单引号啊、双引号啊、反引号啊、括号啊、基本的语句啊等等,页面返回都不是我所预想的结果。
开始怀疑是误报…
二、 果
和大佬聊了一下,看了报告里面的请求包
是两个@@触发了报错
然后尝试了一下,
// 当然也可以借助bp的内置字典
展开全文
就是轻易被封ip…
可以看到凡是带有@符号的都会报错,返回状态码500
既然注进点有了,那么开始构造poc来证实漏洞可利用
在两个@@后面,无论构造任何语句,都不会被执行
那么依据上文bp遍历字典的结果来看,似乎用一个@的话,后面的会被执行
开始构造
@and 1=1
依据这些信息加上报错回显,可得知是mssql数据库
Mssql报错注进很简单,拿相关函数(user,db_name())与数值进行比较、四则运算都可
所以获取用户名的poc为:@and user=1
// 区别于mysql,mssql的用户名为 user 数据库为db_name()
但是有一点问题,and --- a_nd
推测规则是:检测到and,则把a替换成a_
绕过:改成大写
即 @anD+user=1
用@来终止上个语句,属实是第一次见,也不知道使用的sql语句是怎么写的
不得不感叹:大千世界,无奇不有。
通过信息收集,得知网站指纹,下载了相关最新版cms源码,发现还是有些出进的,可能是因为没有导进模板的原因…
顺便看了看install目录下的sql文件
推测跟mssql的存储过程有关
具体原因未知,有空再往分析一下它的代码
看看是怎么插进数据库查询的