upload-labs学习笔记

upload-labs学习笔记

Upload-labs是一个所有类型的上传漏洞的靶场

在这里插入图片描述

less 2-mime认证

  1. 首先我们先介绍一下源码PHP函数
  2. file_exists(路径) 判断指定的文件或目录是否存在,不存在返回true,否则返回false
  3. in_array(变量,数组) 如果变量存在于数组就返回true,否则返回false
  4. isset(变量) 如果变量存在且值不为null返回true,否则返回false
  5. move_uploaded_file(文件路径,文件夹路径) 将文件移动到指定文件夹下
  6. strrchr(字符串,字符) 如果字符存在于字符串时,返回第一次找到的字符至字符串末尾的子串。不存在于字符串时就返回false
  7. strtolower(字符串) 将字符串全部转换成小写
  8. trim(字符串) 删除字符串前后的空白符,空白符: 空格、制表符(\t)、换行符(\n)、回车符(\r)、空字节符(\0)和垂直制表符(\x0B)
这一关考查的是mime认证即MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式

我们直接burp抓包:

在这里插入图片描述

修改content-type值,就可以成功上传

less 3-黑名单绕过

在这里插入图片描述

这一关不能上传以上文件,我们使用htaccess文件进行绕过

什么是htaccess文件
.htaccess文件(或者”分布式配置文件”),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。
它里面有这样一段代码:AllowOverride None,如果我们把None改成All(在phpstudy的配置中)

我们先上传一个htaccess文件,内容为

在这里插入图片描述
)]

这个意思是将让所有格式文件都解析为php,我们可以将php文件改为.php.jpg直接提交

这一关也可以上传phtml文件和php5文件等…

less 4-htaccess绕过

在这里插入图片描述

这一关就用htaccess文件绕过,上面已经解释了,我们进入下一关

less 5-user,ini文件绕过

在这里插入图片描述

user.ini : 自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被
   CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用
   .htaccess 文件有同样效果。

   除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web
   根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

   在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI
   设置可被识别。

   两个新的 INI 指令,user_ini.filename 和 user_ini.cache_ttl 控制着用户 INI 文件的使用。

   user_ini.filename 设定了 PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。默认值是
   .user.ini。

   user_ini.cache_ttl 控制着重新读取用户 INI 文件的间隔时间。默认是 300 秒(5 分钟)。

user.ini文件和htaccess文件

我们写一个.user.ini的文件,内容为auto_prepend_file=1.gif,然后再上传一个内容为php的一句话的脚本,命名为1.gif,.user.ini文件里面的意思是:所有的php文件都自动包含1.gif文件。.user.ini相当于一个用户自定义的php.ini

它已经提示了我们有readme.php文件,我们只要用readme.php的路径,连接蚁剑即可

less 6 大小写绕过

在这里插入图片描述

在这里插入图片描述

这关源码中没有对大小写进行防护,我们上传PHP文件即可成功

less 7

这关的源码中没有对空格进行删除,我们可以进行空格绕过

在这里插入图片描述

我们用burp进行抓包,在文件名后加上空格,成功上传

less-8

Windows系统下,文件后缀名最后一个点会被自动去除,我们看这关的源码

在这里插入图片描述

没有对.进行过滤,我们可以利用这一点,在文件名后加上.成功上传

less 9

补充知识:php在window的时候如果文件名+":: D A T A " 会 把 : : DATA"会把:: DATA"::DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA"之前的文件名 他的目的就是不检查后缀名。这样就简单了,我们上传一个php文件,在burp中修改文件名即可:

成功上传

less 10

在这里插入图片描述

我们看到它会删掉这些后缀名,我们将计就计将php文件变为.phpphp文件,他删掉一个后正好剩下php,刚好成功上传

less 11

str_ireplace函数会替换掉后缀名,所以我们进行双写绕过

在这里插入图片描述

我们只需要把后缀名改为.pphphp即可

less 12

第十二关我们看代码,可以得知是一个白名单,只允许上传’jpg’,‘png’,'gif’格式的文件。但是上传路径是可以控制的,可以使用%00进行截断。%00只能用于php版本低于5.3的

在这里插入图片描述

我的版本是5.4.45,所以我主要说下思路,这里我们需要把phpstudy切换一下版本,把magic_quotes_gpc关闭,再用burp在文件名后加%00即可

less 13

第十三关和第十二关是差不多的,只不过是接受值变成了post,她两的差别呢就是get会自行解码,post不会自行解码,我们需要对%00进行编码,选中%00右键,按下图操作来

在这里插入图片描述

在这里插入图片描述

less 14

这关要制作图片码

img

因为这关已经说了有文件包含漏洞,所以我们直接访问即可

在这里插入图片描述

less 15

这关有一个特殊的函数getimagesize,这个函数的意思是:会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求的

所以我们继续用上一关的图片码即可

less 16-exif_imagetype图片马

这关需要开启php_exif模块

在这里插入图片描述

这关继续用图片马

less 17

这关有个imagecreatefromjpeg()函数,我们上传图片马是成功的但是我们在图片中的十六进制中的php代码被删除了,我们需要用对比十六进制,找出图片十六进制中不变的地方写入php代码,再上传就成功了

软件HxD Hex Editor

链接https://mh-nexus.de/en/hxd

less 18

有一种解法是条件竞争,,我们看代码他是先将php.文件上传上去,才开始进行判断后缀名、二次渲染。如果我们在上传上去的一瞬间访问这个文件,那他就不能对这个文件删除、二次渲染。这就相当于我们打开了一个文件,然后再去删除这个文件,就会提示这个文件在另一程序中打开无法删除。

所以我们利用burp的重发器,再用另一个浏览器疯狂访问,只要在上传的一瞬间,他还没来的及删除、修改就可以了

less 19

这一关也是条件竞争,但我们不能上传php文件了,只能上传图片马,剩下的步骤与18关相同

less 20

move_uploaded_file()有这么一个特性,会忽略掉文件末尾的 /.

在这里插入图片描述

less 21(这关实在没看懂,移步大佬的wp吧)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值