99

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 () 中间添加一个空格后,正常执行,直接绕过了云锁,这里其实也可以用其他替换空格的字符进行绕过