upload-labs通过笔记

如果你看到了我的,我还是推荐你去看这个网址(https://blog.csdn.net/waqqy/article/details/134937642),其中更详细和全面,我也从中学习了一些知识。

第一关

绕过方式:

方式一:将要上传的php文件后缀改为图片文件后缀,然后通过bp抓包修改后缀名上传。

方法二:禁用js。通过按F12后按F1就可以找到一个禁用js的选项。

第二关

绕过方式:

上传php文件后用bp抓包,修改Content-Type为以下三种情况,均可上传成功。

情况一:image/gif,情况二:image/png,情况三:image/jpeg。

第三关

绕过方式:

上传以php3或php5为后缀的文件。

第四关

绕过方式:

首先上传含义一句话的文件更改后缀名为jgp或其他可上传的文件后缀。

再上传一个名为 .htaccess的文件。文件内容如下:

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

该文件是配置文件,可以改变当前目录的规则。书写的内容意思为设置当前目录所有文件都使用PHP解析,那么无论上传任何文件,只要文件内容符合PHP语言代码规范,就会被当作PHP执行,不符合则报错。

第五关

绕过方式:

因为每种绕过方式只过滤一次,所以可以重复存在同一种绕过方式,或是将靠前的过滤方式放后。

在文件后缀加. .(两个点中间有空格)或是其他的组合,例如. ::$DATA

第六关

绕过方式:

修改php文件后缀的大小写。

第七关

绕过方式:

在php文件后缀加一个空格。

第八关

绕过方式:

在php文件后缀加一个点。

第九关

绕过方式:

在php文件后缀加::$DATA。

第十关

绕过方式:

和第五关一样的绕过方式。

第十一关

绕过方式:

双写php文件后缀绕过。例如:phpinfo.php修改后phpinfo.pphphp

第十二关(POST的00截断)

该绕过方式有两个前提:

php版本小于5.3.4

php.ini的magic_quotes_gpc为OFF状态

绕过方式:

在bp数据包中修改PHP文件后缀为png或其他白名单,在路径save_path 后增加文件名 1.php%00。

第十三关(GET的00截断)

绕过方式:

修改filename后缀,并在uplod后面加上传后的文件名加一个加号是为了下一步方便。

用bp中的hex修改加号位置为00,如下图。

第十四关

制作图片码

方式一:

上传一张图片用bp抓包,在图片最后加一句话木马。

方式二:

用010工具或其他可以显示文件16进制的工具在一句话木马的文件头前加图片的特征码。

特征码如下:

.jpg FF D8 FF E0 00 10 4A 46 49 46
.gif 47 49 46 38 39 61
.png 89 50 4E 47

方式三:

用cmd命令将图片和一句话木马文件合并。

例如:copy 1.jpg/b + 1.php/a 2.jpg

利用方式:

如果通过方式一制作图片码,利用方式如下。

此时需要访问:靶场ip地址/include.php?file=upload/文件上传后的名字。

第十五关

绕过方式:

本关只能使用方式一和方式三制作的图片码。

第十六关

绕过方式:

和上一关一样。

第十七关

绕过方式:

本关对图片进行了二次渲染,通过对比gif图片被渲染后有大部分的内容没有进行改变。

首先将一张gif图片之间上传,再将上传后的文件下载下来。

在010中对比两张图片那一部分没有改变。

此时可以通过图片码制作方式一进行一句话的上传。

第十八关

绕过方式:

成因:本关代码有个漏洞,当上传文件时程序会先保存之后判断是否为图片,不是就删除。

思路:在删除前有一小段时间是可以访问到该文件的,如果在文件被删除之前连接到该文件,程序就无法删除了。所以可以通过边发送一句话的上传请求一边发送连接一句话的请求。来达到一句话上传的目的。

第十九关

绕过方式:

本关的请求方式和上一关有点不一样,此时我们需要包含该图片码。其他还是一样的。

第二十关

绕过方式:

没有对上传的文件做判断,只对用户输入的文件名做判断
后缀名黑名单
上传的文件名用户可控
黑名单用于用户输入的文件后缀名进行判断
move_uploaded_file()还有这么一个特性,会忽略掉文件末尾的 /.

先准备PHP一句话木马,并把后缀名改为PNG再上传

将保存的文件后缀加一个/.

第二十一关

绕过方式:

在上传一句话用bp抓包后需要修改一下部分。

修改content-type

修改POST参数为数组类型,索引[0]为`upload-20.php`,索引[2]为`jpg|png|gif`。

只要第二个索引`不为1`,$file[count($file) - 1]就等价于$file[2-1],值为空

posted @   0kooo  阅读(19)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示