ctfshow文件上传漏洞做题记录
ctfshow文件上传漏洞做题记录
前言:之前发的博客已经做了文件上传漏洞的一些做题,今天来记录一些理论的知识以及之前没做完的题
1.1 前置基础知识
检测层面:前端和后端
检测内容 : 文件头 完整性,二次渲染等
检测后缀: 黑名单 白名单 MIME检测等
1.2 ctfshow web 158
相比前几个题,这个题还多过滤了() 这时候之前的后门就没法用了,我们想要调用eval函数总是需要括号,这时
候考虑直接输出我们的flag,但是括号又不能用了,该如何解决呢? 这时候就要使用反引号了。
php中反引号会将其中的内容放在system()中执行,但需要注意的是执行的结果并不会自己输出,所以我们要手动
输出。所以我们根据此原理我们可以写出后门
<?=`tac ../f*`?>
1.3 ctfshow web 159
payload和上一题没有任何区别,应该是加了点过滤,秒了
1.4 ctfshow web 160
本题过滤掉了反斜杠,我们需要更换思路了
我们已知在nginx下会将请求的Ua头记录在默认的日志文件中,那我们将后门代码写入ua头,然后包含日志文件即
可实现后门的写入。
在ngnix下日志记录文件存储于 /var/log/nginx/access.log
因此我们有了payload的写法
<?include"/var/lo"."g/nginx/access.lo"."g"?>
将payload写入a.png,利用.user.ini包含a.png,然后a.png中的代码包含了日志文件,然后在随便上传一个图片,
或者访问一下upload,直接在ua头处直接写入
<?=`tac ../fla*`?>
然后访问upload/下即可获得flag
1.5 ctfshow web 161
本题除了上面的过滤,还设置了对文件头的过滤
文件头是位于文件开头的一段数据,操作系统通过识别文件头,可以识别文件的类型,并决定用何种程序来打开该
文件。在本题中只有gif文件的文件头能通过前端验证gif的文件头为GIF89a
其余步骤和上一题相同。