文件上传
(1)
  • background
    之前做的upload-labs这个靶场,文件上传的基础知识挺全的,自己做题中又遇到文件上传,但是知识点忘了,所以回过头来整理一下
  • 函数
  1. strtolower()函数把字符串转换成小写
  2. trim()去除字符串首尾处的空白字符(或者其他字符)
在windows系统中会将文件扩展名后的空格做空处理,并不会被当成另一 
种不可识别的文件类型。
  1. deIdot()删除文件名末尾的点
    文件上传后,Windows会去除末尾的点,Linux不会改变,但是访问带点
    的shell文件也可以
  2. strrchr()
windows特性:在window的时候如果文件名+"::$DATA"会把::$DATA之后 
的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件 
名,他的目的就是不检查后缀名

  1. str_ireplace()返回替换后的字符串或者数组
    $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字
    符串::$DATA
  2. move_uploaded_file(string $filename,string $destination)将上传的文件移动到新位置
    1.x00截断
    2.忽略掉文件末尾的/.
  3. in_array(A,B)在数组中找A值,存在返回true
  4. explode()把字符串打散成数组
  • 题目类型
  1. js本地验证:在前端使用javascript脚本对要上传的文件进行检查,服务端没有进行检查
    解决:
1.burpsuite抓包绕过

2.禁止JS
Firefox禁用JavaScript:
在Firefox地址栏里输入“about:config”。
在搜索栏输入“javascript.enabled”查找到首选项。
点击鼠标右键选择“切换”,把“javascript.enabled”键值改为“false”
3.修改JS
在前端执行了onsubmit="return checkFile()",所以修改或删除可绕过

  1. 服务端对数据包MIME检查
  2. 黑名单
1.黑名单未限制.htaccess的情况

.htaccess文件是apache服务器的一种目录级别的修改配置的方式
它可以调用php解析器解析后缀文件,网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。(其他功能没有实现过)

<FilesMatch ".jpg">
SetHandler application/x-httpd-php
</FilesMatch>

匹配.jpg的文件,被解析成PHP形时

.htaccess生效的条件:
1、Allow Override All(默认配置为关闭none)

2、LoadModule rewrite_module modules/mod_rewrite.so #rewrite 
模块为开启状态

2.对文件名修改

上传黑名单之外的
大小写绕过
后缀后面添加空格
后缀后面添加“.”
后缀后面加"::$DATA"
双写后缀名绕过 如:“pphphp”
双写后缀特殊符号 如:“info.php. .”
\x00截断路径 如:“shell.php\x00.jpg”
  1. 白名单判断&上传路径可控
%00截断(用在路径上)

在url中%00表示ascii码中的0,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束,如 “shell.php%00.jpg”

把0d改为00

save_path是通过post传进来的,在post里面的数据不会被url自动解码,所以在二进制中进行修改

00截断

0x00是字符串的结束标识符,对后面内容进行截断,后面内容用来绕过检测,
0x开头表示十六进制。
限制条件:

PHP<5.3.29   且magic_quotes_gpc为OFF状态
  1. 图片马
    读前两个字节
    制作方法:

GIF8a
或者使用图片修改软件:GIMP

二次渲染

参考链接:https://xz.aliyun.com/t/2657
方法:
gif:找到之前的图片与渲染后的图片没有变化的位置,然后将php代码写进去
png
jpg

  1. 条件竞争

这里是先用move_uploaded_file函数把文件保存,然后判断文件后缀名,不通过就删除。问题出现在有一个先后顺序,如果一直发包,让PHP程序一直处于移动php文件到upload目录这个阶段,就可以在删除它之前去访问
选一个可控参数进行一直发包

本文为作者hackerbo.com发布,未经允许禁止转载!
上一篇 下一篇
评论
暂无评论 >_<
加入评论