【笔记】00截断
前言
针对于文件上传漏洞的00截断漏洞学习笔记
00截断漏洞不仅发生在PHP语言环境中,同时发生在所有底层使用C语言作为文件上传的语言环境中
本文仅用于网络信息防御学习
可用环境
- 当出现了文件上传时,服务器校验文件扩展名但是不校验文件内容时
- 当出现了文件上传的存储路径为变量,可以通过请求的参数修改存储路径时
- 当服务器上传文件采用的时PHP语言的
move_uploaded_file()
函数时
使用方式
- 文件内容为恶意代码
- 文件的后缀为
.gif
- 请求的Content-Type为
text/php
- 请求时,文件存储路径的参数修改为
./<filename>.php%00
原理
- 当这样的请求发出后,服务器会收到
./<filename>.php%00/<filename>.gif
的上传文件请求,但是执行文件写入时的move_uploaded_file()
函数实质上调用的是C语言,而C语言中字符串的结束标记为00
(URL编码后为%00
),所以实质上保存的路径为./<filename>.php