做网站的流程是什么,中国做视频网站有哪些,word超链接网站怎么做,做网站可以用别人的源码吗CTFHUB-技能树-Web前置技能-文件上传#xff08;前端验证—MIME绕过、00截断、00截断-双写后缀#xff09; 文章目录 CTFHUB-技能树-Web前置技能-文件上传#xff08;前端验证—MIME绕过、00截断、00截断-双写后缀#xff09;前端验证—MIME绕过有关MIMEMIME的作用 解题时有…CTFHUB-技能树-Web前置技能-文件上传前端验证—MIME绕过、00截断、00截断-双写后缀 文章目录 CTFHUB-技能树-Web前置技能-文件上传前端验证—MIME绕过、00截断、00截断-双写后缀前端验证—MIME绕过有关MIMEMIME的作用 解题时有很多种思路题目解析 MIME绕过—00截断关于00截断题目解析 MIME绕过—00截断-双写后缀关于双写题目解析 前端验证—MIME绕过
有关MIME
web服务器使用MIME来说明发送数据的种类 web客户端使用MIME来说明希望接收到的数据种类
MIME的作用
使客户端软件区分不同种类的数据例如web浏览器就是通过MIME类型来判断文件是GIF图片还是可打印的PostScript文件。
简单来说就是一种校验机制当文件进行上传的时候对文件的Content-Type进行校验如果是白名单中所允许的类型则能够成功上传如果不是则无法上传。
解题时有很多种思路
方法一
直接上传木马文件把mime类型改为前端可验证的
方法二
也就是直接传入前端可验证文件抓包修改为PHP脚本文件
题目解析
既然是Content-Type验证就需要进行抓包
依旧上传php一句话木马文件并抓包
这里修改Content-Type字段的值为image/jpeg也可以是别类型 放包发现上传成功
访问一下发现执行成功
用蚁剑进行连接寻找flag即可 html中发现flag MIME绕过—00截断
关于00截断
截断原理 0x00是字符串的结束标识符攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断而后面的内容又可以帮助我们绕过检测。 00截断的限制条件 PHP5.3.29且GPC关闭
参考链接http://www.admintony.com/%E5%85%B3%E4%BA%8E%E4%B8%8A%E4%BC%A0%E4%B8%AD%E7%9A%8400%E6%88%AA%E6%96%AD%E5%88%86%E6%9E%90.html 00截断有限制php版本得低于5.3并且GPC得关闭一般在url上。 两种方法%00和0x00,后台读取是遇到%00就会停止。 举个例子url中输入的是upload/post.php%00.jpg那么后台读取到是upload/post.php就实现了绕后目的。 ———————————————— 参考链接https://blog.csdn.net/m0_52432374/article/details/113850458
00截断简单来说就是由于php解释器是由C语言编写的所以遵循C语言解析文件时遇到ascll码0时停止解析而%00表示ascll码中的0所以php解释器在解析文件时遇到%00就会默认文件名已经解析结束所以我们可以利用这一原理进行上传。
题目解析
这里直接上传php一句话木马文件不可行显示文件类型不匹配 查看源代码发现设置了白名单 根据提示我们使用00截断进行绕过。
首先使用bp抓包
我们找到文件名在文件名后面在POST请求后面都加上我们的截断让他后面的代码不在执行。1.php%00;.jpg 放包上传成功 虽然这次页面没有提示我们的文件存放在哪里但是根据之前的题目。我们可以判断出我们上传的文件摆放在upload目录下面。我们直接访问/upload/1.php发现代码执行成功 然后我们使用蚁剑进行连接一句话木马寻找flag MIME绕过—00截断-双写后缀
关于双写
双写后缀绕过这里适用于前后端都对文件的扩展名做了限制。我们可以通过双写文件的扩展名达到绕过的目的。例如xxx.phpxxx.pphphp.
用于只将文件后缀名例如php字符串过滤的场合
例如:上传时将Burpsuite截获的数据包中文件名【evil.php】改为【evil.pphphp】那么过滤了第一个php字符串后开头的p和结尾的hp就组合又形成了【php】。题目解析
先规矩的上传一个php文件发现上传成功 但文件后缀名被过滤了(原先我的文件名字是1.php
查看源代码发现使用了黑名单机制 如果是文件名被过滤我们就可以直接利用双写来绕过。我们回到我们的文件,将后缀进行两次写入,使用双写后缀绕过。
两种方法在上传前将后缀名改为pphphp在上传时用bp抓包将filename文件名改为1.pphphp注意双写一定要在php里面在写一个php不能两个php连着写不然两个php都会被识别两个都会被过滤掉这里使用bp抓包的方法
将filename文件名改为1.pphphp 放包上传成功 访问发现代码执行 使用蚁剑连接寻找flag