CTFHub_文件上传
0x01 无验证
打开页面如图示:  上传一句话木马用蚁剑连接
<?php @eval($_POST[cmd]);?>
因为没有任何限制,就直接上传.php木马文件  上传成功,显示上传文件相对路径,用蚁剑连接  连接成功,可在/var/www/html下找到flag! 
0x02 js前端验证
打开页面如图示:  上传木马文件1.php,显示不允许上传  题目是js前端验证,查看网页源码,发现只能上传.jpg .png .gif图片格式文件  将 .php文件改为.png图片文件上传 用burp抓包 将.png后缀改为.php放包  返回路径  继续用蚁剑连接  拿到flag! 
0x03 .htaccess
.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过.htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。  .htaccess文件(或者"分布式配置文件"),提供了针对目录改变配置的方法, 即在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。
打开页面如图示:  查看源码发现大多数文件后缀都被禁用  .hatccess文件内容如下:
SetHandler application/x-httpd-php
先上传.htaccess,而后上传的文件,都会解析为php。文件名命名为.hatccess,上传该文件  然后将1.php改为1.png文件上传  上传成功返回路径,用蚁剑连接  拿到flag! 
0x04 MIME绕过
MIME多用途互联网邮件扩展类型。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。标准的文件上传组件中会自动上传文件的MIME类型,但是由于MIME类型是从客户端传递的,修改也不影响文件正常运行,因此通过BURP拦截和修改MIME类型可以轻易绕过此类检测。具体方法:Burp suite拦截文件上传数据包,修改文件类型即可。
常见的MIME类型:
超文本标记语言文本.html text/html
普通文本.txt text/plain
RTF文本.rtf application/rtf
PDF文档.pdf application/pdf
PNG图像.png image/png
GIF图形.gif image/gif
JPEG图形.jpeg, .jpg image/jpeg
ASP.asp application/x-asap
打开页面如图示:  上传1.php一句话木马,并用burp抓包,将文件类型修改为image/jpeg。  上传成功并返回路径  用蚁剑连接  拿到flag! 
0x05 00截断
如果是白名单检测的话,我们可以采用00截断绕过。00截断利用的是php的一个漏洞。在 php<5.3.4 版本中,存储文件时处理文件名的函数认为0x00是终止符。于是在存储文件的时候,当函数读到 0x00(%00) 时,会认为文件已经结束。
例如:我们上传 1.php%00.jpg 时,首先后缀名是合法的jpg格式,可以绕过前端的检测。上传到后端后,后端判断文件名后缀的函数会认为其是一个.jpg格式的文件,可以躲过白名单检测。但是在保存文件时,保存文件时处理文件名的函数在遇到%00字符认为这是终止符,于是丢弃后面的 .jpg,于是我们上传的 1.php%00.jpg 文件最终会被写入 1.php 文件中并存储在服务端。
且需注意截断条件需要满足:
(1)php版本小于5.3.4
(2)php的magic_quotes_gpc为OFF状态
打开页面如图示: 
查看源码发现只能上传.jpg .png .gif 图片格式文件 
将木马文件1.php改为1.png上传,并用burp抓包。添加1.php%00  返回路径用蚁剑连接  拿到flag! 
0x06 双写后缀
打开页面如图示:  观察源代码,黑名单过滤内容较为完整,代码逻辑存在str_ireplace ,将黑名单内存在的内容替换为空,从而限制用户上传的文件后缀,使php文件得不到正常的解析!
绕过本题的思路,即将上传的文件名后缀双写,即可绕过双写:phphpp、pphphp、phpphp。  上传1.php,用burp抓包,将后缀改为phphpp  上传成功,返回路径。但是会发现文件后缀是hpp,貌似是后缀的后三位  重新换个后缀再试  上传成功,并返回了正确路径  用蚁剑连接  连接成功,拿到flag! 
|