【笔记】00截断

前言

针对于文件上传漏洞的00截断漏洞学习笔记
00截断漏洞不仅发生在PHP语言环境中,同时发生在所有底层使用C语言作为文件上传的语言环境中

本文仅用于网络信息防御学习

可用环境

  • 当出现了文件上传时,服务器校验文件扩展名但是不校验文件内容时
  • 当出现了文件上传的存储路径为变量,可以通过请求的参数修改存储路径时
  • 当服务器上传文件采用的时PHP语言的move_uploaded_file()函数时

使用方式

  1. 文件内容为恶意代码
  2. 文件的后缀为.gif
  3. 请求的Content-Type为text/php
  4. 请求时,文件存储路径的参数修改为./<filename>.php%00

原理

  • 当这样的请求发出后,服务器会收到./<filename>.php%00/<filename>.gif的上传文件请求,但是执行文件写入时的move_uploaded_file()函数实质上调用的是C语言,而C语言中字符串的结束标记为00(URL编码后为%00),所以实质上保存的路径为./<filename>.php

完成

参考文献

哔哩哔哩——千锋教育网络安全学院