BUUCTF_web_CheckIn

BUUCTF_web_CheckIn

题目:

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

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

打开题目是一个上传界面。BUUCTF_web_CheckIn_第1张图片
随便上传一个php文件,意料之中被拦。
burp抓包改后缀为jpg,提示说包含了,看来对文件内容也进行了过滤
BUUCTF_web_CheckIn_第2张图片
于是将php标记格式改为脚本标记格式:
BUUCTF_web_CheckIn_第3张图片
报错为 exif_imagetype:not image! ,应该是用了exif_imagetype()函数对文件格式进行了检查

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

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

所以,可以是这样:
BUUCTF_web_CheckIn_第4张图片
成功传入。

但上传上去了只是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
BUUCTF_web_CheckIn_第5张图片
接着上传一个shell.jpg的一句话
BUUCTF_web_CheckIn_第6张图片
接着访问上传目录下的index.php,post密码shell,看到效果。
BUUCTF_web_CheckIn_第7张图片
接着在根目录下找到flag。之后cat /flag得到flag
BUUCTF_web_CheckIn_第8张图片

你可能感兴趣的:(ctf_web)