MSSQL注入绕云锁分析
0x01 环境
搭建环境: windows server 2012 + sql server 2008 + IIS7
0x02 Sql server数据库特性
MSSQL数据库大概有五个地方可以添加绕过字符,例子如下
select id,content,time from news where news_id=1 union select 1,2,db_name() from admin |
上述语句是一个联合查询,可添加绕过字符位置
1、news_id=1
- 这里为位置一,可利用其他控制字符替换空格:%01-%0F、%11-%1F。
- 可利用注释符号:/**/
- 可利用数学运算以及数据类型:news_id=1.1,news_id=1e0,news_id=1-1
2、union
- 这里为位置二,可利用其他控制字符替换空格:%01-%0F、%11-%1F。
- 可利用注释符号:/**/
- 可利用冒号:union:select
3、select
- 这里为位置三,可利用其他控制字符替换空格:%01-%0F、%11-%1F。
- 可利用注释符号:/**/
- 可利用其他符号:+、-、~、:、.
4、db_name()
- 这里为位置四,可利用其他控制字符替换空格:%01-%0F、%11-%1F。
- 可利用注释符号:/**/
- 可利用其他字符:%80-%FF
5、from
- 这里为位置四,可利用其他控制字符替换空格:%01-%0F、%11-%1F。
- 可利用注释符号:/**/
- 可利用冒号:union:select
- 可利用其他字符::、.、%80-%FF
大概就是如上的一些字符,其实都是我copy下来的,不过作为博客记录,以后方便看,在绕waf的过程中也经常用fuzz,可以讲这里的字符组合一下,到时候fuzz一波。
在D盾中会过滤/**/,%等字符,不过云锁使用/!随意字符/可以绕过检测(目前可以绕过)
0x03 MSSQL注入绕云锁
测试页面
使用POST方法,添加union select关键字后云锁拦截
写入一个正常的sql语句,使用union/!ddsad/select绕过了云锁
添加db_name()后,云锁拦截,说明是对数据库函数有过滤的
不过在db_name () 中间添加一个空格后,正常执行,直接绕过了云锁,这里其实也可以用其他替换空格的字符进行绕过
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Time'Blog!
评论