文件上传之靶场upload-labs(11-20)

    科技2026-02-10  20

    文章目录

    pass-11pass-12pass-13pass-14pass-15pass-16pass-17pass-18pass-19pass-20

    pass-11

    strrpos() 函数查找字符串在另一字符串中最后一次出现的位置,substr() 函数返回字符串的一部分,文件保存的方式是上传路径+随机时间+截取的文件后缀,其中上传路径可控,可以利用这一点 绕过方法: 利用00截断进行绕过,即move_uploaded_file函数的底层实现类似于C语言,遇到0x00会截断 截断条件: 1、php版本小于5.3.4 2、php.ini的magic_quotes_gpc为OFF状态 访问:

    pass-12

    和上一个关一样不过路径上传方式由GET变成POST 绕过方法 00截断 post方式中需要修改成二进制的00而不是直接在请求数据中修改00 在hex视图中找到+的十六进制2b改为00,然后放行 访问:

    pass-13

    读取上传文件中的两个字节 将读取的内容解包(unpack() 函数从二进制字符串对数据进行解包返回数组一个字节为一个值) 返回解包后的整数值(intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值) 绕过方法: 我们在一句话木马前面加上GIF89A(gif图片特征码) 上传了马后缀为gif想要利用需要配合另一种漏洞文件包含,靶场专门有一个文件让我们测试文件内容为

    访问: 由于只检查前两个字节 方式2: 码前面加上11然后找到对应hex值3131 改为ffd8

    访问: 方法三: 使用png的特征吗前两个字节8950 访问:

    pass-14

    利用图片马,将一张正常的图片jpg,和一句话php合成一张新的jpg文件(window下 cmd , copy /b 1.jpg + 1.php 3.jpg) 也可以直接在图片里写入 访问:

    pass-15

    绕过方法

    一样使用图片马

    pass-16

    上传图片马,但是经过二次渲染,马已经消失,通过对比两个图片相同的部分,然后一样的地方写上一句话木马; 经过比较发现蓝色部分是一样的,在此处写上木马上传成功后比较 木马并没有消失

    pass-17

    通过move_uploaded_file保存文件在判断是否后缀是否是图片,如果是则重命名保存,如果不是删除这里存在着一个漏洞,叫条件竞争 当我发送大量的包时,文件就会先进行保存,而判断可能会存在一定的延迟此时上传一个php文件里面代码在创建一个包含一句话的php这样就算把上传的文件删除也会存在一个木马文件 上传一个php文件内容如下

    <?PHP fputs(fopen('she.php','w'),'<?php phpinfo() ?>');?>

    上传使用bp抓取然后发送到intruter模块设置如下 点击两个位置都可以开始攻击 攻击的时候在另一浏览器访问

    http://127.0.0.1/upload-labs/upload/u.php

    它会在删除之前执行代码生成一个she.php的文件

    pass-18

    本关对文件后缀名做了白名单判断,然后会 一步一步检查文件大小、文件是否存在等等,将文件上传后,对文件重新命名,同样存在条件竞争的漏洞。可以不断利用burp发送上传图片马的数据包,由于条件竞争,程序会出现来不及rename的问题,从而上传成功 解题方法与17题类似

    pass-19

    文件名可控, pathinfo() 返回一个关联数组包含有 path 的信息。 包括以下的数组元素: [dirname] [basename] [extension] 访问:

    pass-20

    先检查文件类型,后检查是否上传了文件名没有则为文件的名字,判断是否为数组,若不是则以点分割返回一个数组,取数组最后一位数为后缀,文件保存为reset输出数组第一个数,和最后一位数保存

    绕过方法: php修改后缀jpg上传捉包 文件类型已经为image/jpeg 修改上传路径为一个数组,当获取文件后缀时为jpg,合成文件名为数组第一个,和最后一个,当我们修改jpg为数组的2时,1此时是空的数组一共有三位数,但是实际只有两位,所有获取到的值为空 此时上传后的文件为in.php.

    访问:

    Processed: 0.016, SQL: 9