Upload-labs(Pass-06-Pass-13)

Upload-labs 1-21关 靶场通关笔记(含代码审计)_addhandler sethandler upload 19关-CSDN博客

.php文件

<?php
phpinfo();
?>

Pass-06

大小写绕过

打开环境,查看源码与提示

没有禁止phP 、Php,尝试将文件后缀大小写绕过限制

phpinfo.Php

<?php
phpinfo();
?>

上传成功后,右键点击图片

复制链接并打开

成功访问

Pass-07

空格绕过

查看源码与提示

阅读代码发现  缺少了首尾去除空格的代码过滤  

由于windows特性,文件名后空格会被直接删除,不能直接上传.php后加空格,所以我们要用burp抓包然后再添加空格。

利用PHP 和 Windows环境的叠加特性 ,windows系统自动删除文件名后缀的空格 ,绕过黑名单

尝试上传.php文件,并使用bp抓包并在.php后面加上空格。不需要发送到重放器,直接修改后放行

成功访问到文件路径

Pass-08

点绕过

查看源码与后缀

缺少了deldot函数。删除文件名最后一个点(如果有多个连续的.... 会全部删除)

获取的最终文件后缀为“.” 不在黑名单里面

Windows系统保存文件的特性 :会删除文件后缀名的xxx.php. 最后上传的文件还是xxx.php

上传.php文件,使用bp进行抓包修改

在.php后加上“.”,成功修改后放行

新建标签页打开图像,即可成功访问

Pass-09

(::$DATA绕过黑名单)

查看源码与提示

查找资料可知

这一关黑名单,没有对::$DATA 进 行 处 理  使用::$DATA 进行处理,可以使用::$DATA绕过黑名单

php在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA"之前的文件名 

上传.php文件,bp进行抓包

修改后放行

打开修改后的图像链接

发现无法访问

注意访问路径中不含::$DATA

即可成功访问

Pass-10

点空格点绕过

查看源码与提示

用.php. .绕过

代码运行最后得到的后缀为"." 不在黑名单中 然而又用原来的10.php. .来保存文件 由于windows在

文件命名中会自动删除.和空格 所以最终得到的是10.php 因此绕过了黑名单限制

上传.php文件,bp抓包

在.php后加上“. .”(点空格点)

修改后放行

成功访问

Pass-11

双写php绕过

查看源码与提示

发现依旧是用上传的文件名来拼接路径并保存文件 没有对文件重命名

只是用了str_ireplace()函数来检测(此函数无视大小写) 如果文件名含有黑名单里面的字符串 就替换为空

但是只替换一次 并没有进行正则匹配或者是循环匹配敏感字符  因此只要双写php即可 因为是从左往右读的 所以替换为空后 还是php。pphphp、phphpp都可以尝试 

不可以将两个php重复写在一起,不然都会被消除

直接上传.pphphp文件

<?php
phpinfo();
?>

访问图像链接

成功访问

Pass-12

%00截断白名单

 代码漏洞点就在于:用$_GET['save_path']来组成上传的文件路径,而这个get传参是我们可以控制的地方 

因此我们考虑用是否能进行截断:例如形成../upload/phpinfo.php/截断后面的(xxx.jpg)

这样就通过了白名单校验  并且保存成了php文件

%00截断知识点:

url中的%00(只要是这种%xx)的形式,webserver会把它当作十六进制处理,

然后把16进制的hex自动翻译成ascii码值“NULL”,实现了截断burpsuite中16进制编辑器将空格20改成了00。

本质上来说,都是利用0x00是字符串的结束标识符,进行截断处理。

只不过GET传参需要url编码成%00而已

原理:php的一些函数的底层是C语言,而move_uploaded_file就是其中之一,遇到0x00会截断,0x表示16进制,URL中%00解码成16进制就是0x00。

注意:

%00截断

%00的使用是在路径上!

若上传不成功,可检查下php版本是否为5.3以下,或者尝试对%00进行url编码

查看源码与提示

后台采用了白名单的方式对文件后缀名进行了过滤,并且对文件名采用了随机数加时间的方式进行了重命名。但是,根据提示,我们可以通过GET的方式上传save_path参数,该参数可以控制文件上传的路径。我们借助该参数,可以采取%00截断的方式,将上传文件的文件名和路径写到save_path参数中,然后加上一个%00的符号,来实现对上传文件文件名和后缀名的控制。

上传.php文件,使用bp抓包

进行修改,使用%00截断,并将filename后的.php后缀修改为.jpg

修改完成后放行,文件上传出错!

查阅资料得知

00截断的条件:

php版本小于5.3.29

magic_quotes_gpc = Off

查看phpiinfo(),发现magic_quotes_gpc处于打开状态        

到php的根目录找到php.ini文件, 接着打开并修改为Off

再次进行尝试

上传成功

访问图像链接时却出错了

将链接修改后成功访问。

Pass-13

0x00截断白名单

查看源码

提示与12关一样。同第12关做法相同

只不过上传路径在$_POST数据中 不需要url编码

上传.php文件

使用bp抓包

修改数据

将%00解码,取消url编码

放行后发现上传成功

但和12关一样,具体问题还未知

修改链接,即可成功访问

上传成功后,直接访问成功的url就行

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 19:24:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 19:24:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 19:24:01       82 阅读
  4. Python语言-面向对象

    2024-04-14 19:24:01       91 阅读

热门阅读

  1. go标准库和第三方库使用

    2024-04-14 19:24:01       32 阅读
  2. 华纳云:如何选择适合自己需求的备份服务器?

    2024-04-14 19:24:01       41 阅读
  3. Modbus-RTU通讯协议

    2024-04-14 19:24:01       41 阅读
  4. Internet Download Manager(IDM):提升下载效率的神器

    2024-04-14 19:24:01       78 阅读
  5. 2024-4-14关于闭包的理解

    2024-04-14 19:24:01       39 阅读
  6. 线程池的参数 以及实现

    2024-04-14 19:24:01       41 阅读
  7. 【接着模拟赛】2024.4.14

    2024-04-14 19:24:01       48 阅读
  8. 239. 滑动窗口最大值

    2024-04-14 19:24:01       35 阅读
  9. win10清华源按装OPENCV和其他软件

    2024-04-14 19:24:01       38 阅读