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