来源:自学PHP网 时间:2015-04-17 13:02 作者: 阅读:次
[导读] 基于order by内容的盲注详细说明:对http://active.zol.com.cn/diy/bisai.php?mont_h=2009-05id=12type=15order=zj_vote+desc 做安全检测。尝试数值型注入未果。不过,看到zj_vote+desc,想到这里也许能利用......
基于order by内容的盲注
详细说明: 对http://active.zol.com.cn/diy/bisai.php?mont_h=2009-05&id=12&type=15&order=zj_vote+desc 做安全检测。 尝试数值型注入未果。 不过,看到zj_vote+desc,想到这里也许能利用。 用工具扫它没发现注入。因为mysql的union前不能带order by。 但是order by里的内容是不是就没法注入了? 我不死心啊。 做了一些尝试,发现order by是可以盲注的。 这种方式依赖数据库结果中必须存在一个已知存在不一样数值的列。 不过,既然程序里order by那个字段了,那么那个字段理论上肯定有多种值的。比如本例中的zj_vote字段. 漏洞证明: 看排序。236和239数值相差3,我构造一个abs(zj_vote-237-(expr)) asc. (expr)为假时,(239-237-0)=2,(236-237-0)=1,236排前面, (expr)为真时,(239-237-1)=1,(236-237-1)=2,239排前面, 你也许会说,你这个236和239相差是3,当然简单了。如果相差2呢? 比如236和238怎么办? 不卖关子了,直接告诉你吧,他不是相差2么,你可以用abs(zj_vote-236-(expr)*3)啊 http://active.zol.com.cn/diy/bisai.php?mont_h=2009-05&id=12&type=15&order=abs(zj_vote-237-(length(user())>20))+asc http://active.zol.com.cn/diy/bisai.php?mont_h=2009-05&id=12&type=15&order=abs(zj_vote-237-(length(user())=20))+asc 修复方案: 做一个允许的排序方式组合的数组,排序方式传排序方式的数组下标就可以了。 想直接传字段也可以,检查一下那个排序方式是否在数组里,不是就用默认排序方式。也就安全了。 作者 小雨 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com