Root Me Challenges___FileManager v 0.01
题目:
题目为FileManager v 0.01,提示信息:Retrieve the administrator password of this application.
,就是要我们得到管理员密码
进入题目,有两个连接:home和login
点击进入,可以看到其实只是传了参数进去,分别为
?inc=login.php 和 ?inc=accueil.php
尝试sql注入,无果,尝试暴力破解,无果。。。。。。。
卡了很久,想到题目与文件管理有关,而且页面也是根据传入的php参数得到,试试用php://filter得到他们的源码。
传入:
?inc=php://filter/read=convert.base64-encode/resource=accueil.php
返回一串base64加密后的密文,解密后没啥有用信息,但证明的我们的思路是正确的
再传:?inc=php://filter/read=convert.base64-encode/resource=login.php
将返回的base64密文解密后得到login.php源码
注意到其中包含了一个config.php,一样的方法,传入
?inc=php://filter/read=convert.base64-encode/resource=config.php
将得到的base64解码,得到密码
到login页面,用用户名密码登录,完成!
关于php://filter
php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。
php://filter 的参数
参数 | 描述 |
---|---|
resource=<要过滤的数据流> | 这个参数是必须的。它指定了你要筛选过滤的数据流。 |
read=<读链的筛选列表> | 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。 |
write=<写链的筛选列表> | 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。 |
read参数值可为
string.strip_tags: 将数据流中的所有html标签清除
string.toupper: 将数据流中的内容转换为大写
string.tolower: 将数据流中的内容转换为小写
convert.base64-encode: 将数据流中的内容转换为base64编码
convert.base64-decode: 将数据流中的内容转换为base64解码
格式:
php://filter/[read=参数/]sourse=文件
php://filter/[write=参数/]sourse=文件
常用的:
php://filter/read=convert.base64-encode/resourse=index.php //用于读取index.php的源代码
php://filter/write=convert.base64-decode/resourse=index.php //用于向index.php中写入代码
这里有一道类似的题:
http://4.chinalover.sinaapp.com/web7/index.php
资料参考:
https://blog.51cto.com/wt7315/1863177
https://www.leavesongs.com/PENETRATION/php-filter-magic.html
https://www.jianshu.com/p/0a59c40183e5
https://lorexxar.cn/2016/09/14/php-wei/