BUUCTF_web_CheckIn

题目是SUCTF 2019的web题,
题目源码:https://github.com/team-su/SUCTF2019/tree/master/Web/checkIn

也是看了大佬的writeup才做出来,太菜了。。。orz
学到了一种新的上传姿势。

打开题目是一个上传界面。在这里插入图片描述
随便上传一个php文件,意料之中被拦。
burp抓包改后缀为jpg,提示说包含了<?,看来对文件内容也进行了过滤
在这里插入图片描述
于是将php标记格式改为脚本标记格式:<script language=php> phpinfo() </script>
在这里插入图片描述
报错为 exif_imagetype:not image! ,应该是用了exif_imagetype()函数对文件格式进行了检查

注:exif_imagetype() 读取一个图像的第一个字节并检查其签名。

这里可以用一般的图片马来绕过(注意图片中不能有”<?“,这也是比较坑的地方),或者直接在内容上加上图片的标识头。比如:GIF

所以,可以是这样:
在这里插入图片描述
成功传入。

但上传上去了只是jpg格式,没法直接利用。
是时候就引出了.user.ini文件了。
原理可见p神文章https://wooyun.js.org/drops/user.ini文件构成的php后门.html
简单来说,.user.ini文件形成后门原理就是会在执行所有的php文件之前包含.user.ini所指定的文件

比如,.urer.ini文件中内容:auto_prepend_file=1.jpg 那么,所有的php文件执行前都会将1.jpg当做php类型的文件先包含执行一遍。这也是这道题的关键。(学到新姿势了。。orz)

所以返回到这道题中来,我们先上传一个.user.ini的文件,将其内容设置为auto_prepend_file=shell.jpg,别忘了加上图片头GIF
在这里插入图片描述
接着上传一个shell.jpg的一句话
在这里插入图片描述
接着访问上传目录下的index.php,post密码shell,看到效果。
在这里插入图片描述
接着在根目录下找到flag。之后cat /flag得到flag
在这里插入图片描述

文章作者: Dar1in9
文章链接: http://dar1in9s.github.io/2020/01/19/writeup/BUUCTF_web_CheckIn/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Dar1in9's Blog