4.25学习——文件上传之00截断

继昨天学习的基础文件上传内容,进一步学习文件上传的绕过方式

00截断绕过

原理:00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串时,都是以\0(即0x00)作为字符串的结尾。操作系统在识别字符串时,当读取到\0字符时,就认为读取到了一个字符串的结束符号,以此来达到绕过的目的

但是存在一定的局限性:

php版本小于5.3.29

magic_quotes_gpc = Off

例题:

upload-labs的Pass-12

这一关是白名单型的绕过,白名单里只允许图片类文件上传,如jpg,png文件上传

因为白名单的缘故,只能先上传php.png后缀的文件,在上传处进行修改,而这里就需要用到00%截断的方法(之前没注意到这个问题,图片有点问题)需要修改第一行跟文件名,把upload/后面加上1.php%00,下面的1.php改为1.png就可以了

但是这里还存在另一种情况:使用POST请求的情况,POST不会对里面的数据自动解码,需要在Hex中修改。

先进行抓包,然后在hex值处修改
这里要注意区分,hex中有两个空格,一个是20,一个是00,看上去都是空格,但是00代表的空格没有实际含义,只会起到截断的作用

这样就上传成功了

实战刷点题试试

ctfhub

拿到题目看一下有没有黑名单发现是白名单类型,只允许图片类型的文件进行上传

此时就可以利用00截断来操作了
这里通过00截断来把后面的png后缀丢弃,将其作为php来执行,达到绕过的目的

相关推荐
好好研究1 小时前
学习栈和队列的插入和删除操作
数据结构·学习
新中地GIS开发老师2 小时前
新发布:26考研院校和专业大纲
学习·考研·arcgis·大学生·遥感·gis开发·地理信息科学
SH11HF3 小时前
小菜狗的云计算之旅,学习了解rsync+sersync实现数据实时同步(详细操作步骤)
学习·云计算
Frank学习路上3 小时前
【IOS】XCode创建firstapp并运行(成为IOS开发者)
开发语言·学习·ios·cocoa·xcode
Chef_Chen4 小时前
从0开始学习计算机视觉--Day07--神经网络
神经网络·学习·计算机视觉
X_StarX6 小时前
【Unity笔记02】订阅事件-自动开门
笔记·学习·unity·游戏引擎·游戏开发·大学生
MingYue_SSS6 小时前
开关电源抄板学习
经验分享·笔记·嵌入式硬件·学习
weixin_437398217 小时前
转Go学习笔记(2)进阶
服务器·笔记·后端·学习·架构·golang
慕y2747 小时前
Java学习第十六部分——JUnit框架
java·开发语言·学习
peace..8 小时前
温湿度变送器与电脑进行485通讯连接并显示在触摸屏中(mcgs)
经验分享·学习·其他