|
& c* ] _' S4 m1 W8 c
原标题:渗透测试系列|SQL注入一、 因背景:有位大佬跟我说,某个网站存在SQL注入,但是可能存在waf,需要帮忙验证一下(漏扫扫出来的)拿到url链接之后,开始了各种尝试,什么单引号啊、双引号啊、反引号啊、括号啊、基本的语句啊等等,页面返回都不是我所预想的结果。
& V5 w! N q# K' g7 E: U 开始怀疑是误报…二、 果和大佬聊了一下,看了报告里面的请求包
: o' c/ W' n4 y" \/ c. \ 是两个@@触发了报错然后尝试了一下, 7 _5 z6 s- a" G% o2 D! g; x' E
// 当然也可以借助bp的内置字典就是容易被封ip…可以看到凡是带有@符号的都会报错,返回状态码500 5 ~" y/ f6 S8 J5 X
既然注入点有了,那么开始构造poc来证明漏洞可利用在两个@@后面,无论构造任何语句,都不会被执行 8 Y- ]$ S, z9 R$ h! ?# V. d
那么根据上文bp遍历字典的结果来看,似乎用一个@的话,后面的会被执行 6 _$ K6 C" T/ `- A+ B& n9 J
开始构造@and 1=1根据这些信息加上报错回显,可得知是mssql数据库
4 n2 l8 P% Y) t" K. w1 M8 A Mssql报错注入很简单,拿相关函数(user,db_name())与数值进行比较、四则运算都可所以获取用户名的poc为:@and user=1// 区别于mysql,mssql的用户名为 user 数据库为db_name() / P6 {$ Q2 r; @
但是有一点问题,and --- > a_nd 猜测规则是:检测到and,则把a替换成a_绕过:改成大写即 @anD+user=1  ) c- X9 ^6 t5 R2 [: `
用@来终止上个语句,属实是第一次见,也不知道应用的sql语句是怎么写的不得不感叹:大千世界,无奇不有通过信息收集,得知网站指纹,下载了相关最新版cms源码,发现还是有些出入的,可能是因为没有导入模板的原因…。
6 C w* B( z {) p2 f/ X 顺便看了看install目录下的sql文件 + V+ P. o9 n6 k7 t8 b* ~' v+ W
猜测跟mssql的存储过程有关具体原因未知,有空再去分析一下它的代码看看是怎么插入数据库查询的返回搜狐,查看更多责任编辑: 4 \% E/ ~0 ]" h( ^
# V) |6 J) o- }7 g: K2 f5 S
; H4 S% Z$ s1 }, I: y! W* k6 I! x9 _" c
c. a' t1 H/ p( k0 M, s( ]" ^+ [
|