|
! J0 H5 Y& G. q# z3 m8 Q 原标题:渗透测试系列|SQL注入一、 因背景:有位大佬跟我说,某个网站存在SQL注入,但是可能存在waf,需要帮忙验证一下(漏扫扫出来的)拿到url链接之后,开始了各种尝试,什么单引号啊、双引号啊、反引号啊、括号啊、基本的语句啊等等,页面返回都不是我所预想的结果。
, t! N# j$ \# j! m8 k: v- c 开始怀疑是误报…二、 果和大佬聊了一下,看了报告里面的请求包
5 r4 q: @: H8 j! w4 }0 q1 Z5 a- D' n 是两个@@触发了报错然后尝试了一下, 3 f; K1 |0 H9 Q3 U2 l" ~4 N3 T( h
// 当然也可以借助bp的内置字典就是容易被封ip…可以看到凡是带有@符号的都会报错,返回状态码500 6 w$ T3 t; n: v& h5 Z) k% v1 r
既然注入点有了,那么开始构造poc来证明漏洞可利用在两个@@后面,无论构造任何语句,都不会被执行 8 E1 W% L) J; m" l1 n+ u" ~
那么根据上文bp遍历字典的结果来看,似乎用一个@的话,后面的会被执行
6 Z8 ^+ h4 X) C& S3 O$ q0 }$ d- x0 O 开始构造@and 1=1根据这些信息加上报错回显,可得知是mssql数据库 % [% v9 L) ]/ i
Mssql报错注入很简单,拿相关函数(user,db_name())与数值进行比较、四则运算都可所以获取用户名的poc为:@and user=1// 区别于mysql,mssql的用户名为 user 数据库为db_name()
2 i) @. L1 `; h2 t( l; C! b 但是有一点问题,and --- > a_nd 猜测规则是:检测到and,则把a替换成a_绕过:改成大写即 @anD+user=1  6 w9 o. U: {+ m7 y6 |
用@来终止上个语句,属实是第一次见,也不知道应用的sql语句是怎么写的不得不感叹:大千世界,无奇不有通过信息收集,得知网站指纹,下载了相关最新版cms源码,发现还是有些出入的,可能是因为没有导入模板的原因…。
, U0 P* I. b- g9 u2 M9 } 顺便看了看install目录下的sql文件 7 }* y4 E! q' I
猜测跟mssql的存储过程有关具体原因未知,有空再去分析一下它的代码看看是怎么插入数据库查询的返回搜狐,查看更多责任编辑: ) O' v# h! w/ R! z: Y( S' v1 w1 F
- N: s" u2 N, B2 W
1 ` ^' k* M6 H2 N1 u
. c# q8 M+ ], d) P
& N3 N) E* _$ x% P' B2 u5 |4 w |