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

原文地址:https://www.cnblogs.com/Web-Fresher/p/13663815.html