CTFHUB-技能树-Web-文件上传
无验证
直接写一个一句话木马,上传,然后连接getshell
前端验证&&MIME绕过
将一句话木马文件后缀改为允许类型,如jpg等,然后bp拦截数据包,然后改后缀为php,然后放包,最后连接√√√
文件头检查(/欺骗)
依然是先把shell文件后缀改为允许的,然后拦截数据包,改文件头,以及文件后缀,然后连接getshell
也可以上传一个图片马,制作方法:copy 1.jpg/b+1.php/a 2.jpg
00截断
把文件后缀改为.php%00.jpg,上传,同理0x00,/00等截断应该也可以,但是这题好像不行
原理:从后往前判断文件类型,从前往后解析文件,%00相当于截断,也就是不解析%00.jpg了,所以会将文件以php形式执行
双写后缀
上传1.php,内容同上,bp截取数据包,修改后缀,也就是双写,双写的原理就是因为会对后缀php进行字符替换,但是只有一次,所以双写之后即使被替换了后缀仍然是php
.htaccess文件
先讲一下这个.htaccess文件究竟是何方神圣,百度一下
对于解题有什么用呢???
①它可以用来留后门和绕过黑名单,比如写一个.htaccess文件
内容:AddType application/x-httpd-php .png
解释:将png文件解析为php文件 ###以此类推
②执行我想让服务器执行的文件,比如写一个.htaccess文件
内容:
<FilesMatch "1">
SetHandler application/x-httpd-php
</FilesMatch>
解释:以php文件方式执行文件名包含1的文件
参考https://www.cnblogs.com/hmbb/p/9689436.html
利用:
将一句话文件后缀改为允许类型,用上面任一方法写一个.htaccess文件,上传之后上传一句话文件,连接getshell
这里就不贴图了,应该是没什么问题的,后面会再介绍一个.user.ini文件,功能强大!!!
最后!!!总结
文件上传类题目正常的基本思路就是想办法上传shell,然后连接查看flag,这里再记一个NP操作,就是不需要菜刀/蚁剑/冰蝎连接的(仅适合部分题目),直接在页面上回显,如下
创建一个无后缀的文件,内容如下
<?php
#passthru("ls /var/www/html/(flag的大概路径)"); //第一次只写这一行,用来找flag文件在哪里
passthru("cat /flag路径");//第二次是找到了flag文件之后,直接读取内容
?>
参考自https://blog.csdn.net/weixin_42742658/article/details/106132770