uploads-lab靶场学习


前言

记录uploads-lab靶场的学习

仅供个人学习,如有冒犯请尽快联系


upload-labs

0x01 pass1

在这里插入图片描述

先传一张图片,没什么问题,再尝试传一个不是图片的文件

在这里插入图片描述

出现了报错,用弹窗进行错误提示的话证明是运用了前端验证

我们先改一下一句话木马的后缀

在这里插入图片描述

接着上传,并用burpsuite抓包

在这里插入图片描述

去掉.png跳过前端验证,点击send发送包,即上传文件,这时候查看图片地址,即上传的文件的地址

在这里插入图片描述

用蚁剑连接,去掉末尾的.png,密码为一句话木马传入的参数

在这里插入图片描述

连接成功,也代表我们的文件传入成功

在这里插入图片描述


0x02 pass2

查看提示看到是在服务端对数据的MIME进行检查,MIME是对文件类型进行验证,所以我们用burp抓包然后修改文件的类型。

上传一个1.php文件,用burp抓包。

在这里插入图片描述
Content-Type是文件类型,我们修改后面的octet-stream即可查看源码,发现可以修改为image/jpeg、image/png、image/gif这三种,任意修改一个即可上传


0x03 pass3

这题需要用自己搭的环境,不能用phpstudy搭
或者在httpd.conf文件下添加代码
AddType application/x-httpd-php .php .phtml .php3 .php4

在这里插入图片描述

查看源码,发现不能上传这几种类型的文件

在这里插入图片描述
但是黑名单规则不严谨,在某些特定环境中某些特殊后缀仍会被当作php文件解析 php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml。

我这边试了nss和buu还有phpstudy自己搭的,要么就是403,要么就是不解析php语句
在这里插入图片描述

在这里插入图片描述

这个方法试过了

在这里插入图片描述

这个也试过了,传是能传上去的,但是解析不出来

0x04 pass4

本pass禁止上传.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf后缀文件!

黑名单验证.htaccess
.htaccess 是一个用于 Apache Web 服务器的配置文件,它是一种特殊的文本文件,使用 “.htaccess” 作为文件名的后缀。该文件通常用于在特定目录下改变 Apache 服务器的行为以及对网站进行配置。

.htaccess 文件的作用是允许网站管理员在特定目录中覆盖默认的服务器设置,以灵活地控制网站的行为和功能。它可以包含一系列指令,用于自定义访问权限、重定向URL、启用或禁用模块、修改请求处理规则等。

常见的用途和功能:

URL 重写:通过 RewriteRule 指令可以修改 URL 地址的结构,使得对外暴露的 URL 更加友好和易读,同时也方便实现重定向和 URL 路由功能。
访问控制:通过使用指令如 Require 和 Allow/Deny,可以限制特定用户或 IP 地址的访问权限,保护敏感目录或文件。
自定义错误页面:通过 ErrorDocument 指令,可以针对不同的 HTTP 错误代码自定义相应的错误页面。
缓存控制:通过使用指令如 ExpiresByType,可以设置不同类型文件的缓存过期时间,以提升网站性能和加快页面加载速度。
MIME 类型配置:通过 AddType 或 AddHandler 指令,可以自定义文件扩展名与 MIME 类型之间的映射关系。
重写规则:使用 RewriteRule 和 RewriteCond 指令,可以实现灵活的 URL 重写和重定向规则,对请求进行修改或转发。

这边我们先上传一个.htaccess文件
内容

<FilesMatch "1.jpg">   
    SetHandler application/x-httpd-php
</FilesMatch>

意思是如果文件里面有一个后缀为.jpg的文件,就会被解析成.php。

先上传 .htaccess文件,然后上传phpinfo.jpg文件。

在这里插入图片描述

好好好,又不解析
查过后发现php的nts版本下无法解析

0x05 pass5

.user.ini黑名单

先上传.user.ini文件 再上传含有后门代码的a.jpg文件 根据提示:上传目录存在php文件(readme.php)

所以readme.php会自动包含a.jpg里面的代码 用蚁剑连接即可

.user.ini
auto_prepend_file=1.jpg

.user.ini文件里的意思是:所有的php文件都自动包含a.jpg文件。.user.ini相当于一个用户自定义的php.ini

木马内容(修改为.jpg)

在这里插入图片描述

还是出问题,解析不了

0x06 pass6

没改小写,通过修改大小写绕过
,Php

0x07 pass7

查看本关源码,对比第四关,发现没有收尾去空。

windows会自动删去空格

所以我们直接抓包在burpsuite里修改文件名

在这里插入图片描述

0x08 pass8

阅读代码发现缺少了deldot函数 删除文件名最后一个点(如果有多个连续的… 会全部删除)

和第七关一样,windows文件后缀名同时不能加’.',一样使用burp抓包然后后缀加一个点。

在这里插入图片描述

0x09 pass9

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

在这里插入图片描述

0x10 pass10

看代码,发现代码先是去除文件名前后的空格,再去除文件名末尾的.,再通过strrchar函数来寻找 . 来确认文件名的后缀,但是最后保存文件的时候没有重命名而使用的原始的文件名,发现没有循环验证,也就是说转换大小写去除空格什么的它只验证一次

点+空格+点+空格绕过

所以也是在burp suite里直接改

在这里插入图片描述

0x11 pass11

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

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

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

pphphp、phphpp都可以尝试

在这里插入图片描述

0x12 pass12

查看源码,发现用$_GET[‘save_path’]来组成上传的文件路径 而这个get传参是我们可以控制的地方

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

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

%00截断

利用0x00是字符串的结束标识符,进行截断处理,并且%00的使用是在路径上

截断的限制条件是PHP<5.3.29

在这里插入图片描述

0x13 pass13

同第12关做法相同 只不过上传路径在$_POST数据中 不需要url编码

操作
在这里插入图片描述
别忘了给%00 urldecode

0x14 pass14

图片马
用Notepad++修改图片添加一句话木马

在这里插入图片描述

用winhex打开,确定已经写好了图片马

在这里插入图片描述
上传

在这里插入图片描述

传了,但不解析

接下来用文件包含检验

在这里插入图片描述
检验上传成功

0x15 pass15

查看源码,关键函数是这个getimagesize

在这里插入图片描述

getimagesize函数会对目标的十六进制的前几个字符串进行读取。比如GIF的文件头问GIF89a,png的文件头为塒NG。所以这关和pass14一样,我们只需要用notepad打开图片马,在前面加上塒NG并保存

在这里插入图片描述

还是一样,传了不解

文件包含检验成功

在这里插入图片描述

0x16 pass16

和pass15没什么区别,需要打开php_exif模块

0x17 pass17

二次渲染

imagecreatefromjpeg()函数,二次渲染是由Gif文件或 URL 创建一个新图象。成功则返回一图像标识符/图像资源,失败则返回false,导致图片马的数据丢失,上传图片马失败。

绕过方法:上传一个 GIF 图片马 ,然后将其下载下来 ,查看其十六进制的文件内容, 找到二次渲染后不变的地方 ,而这个地方就是可以插入一句话的地方

简单点就是找别人写好的绕过二次渲染的图片马

在这里插入图片描述

文件包含检验成功

在这里插入图片描述

  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于搭建uploads-labs靶场,你可以按照以下步骤进行操作: 1. 下载uploads-labs源代码:你可以从GitHub上找到uploads-labs的源代码,并将它下载到你的服务器或本地机器上。 2. 安装必要的依赖:uploads-labs使用了一些依赖库,你需要安装它们。通常来说,你需要安装Python和一些Python库,比如Flask、SQLAlchemy等。根据项目的要求,你可能还需要安装其他的依赖库。 3. 配置数据库:uploads-labs使用了数据库来存储数据。你需要创建一个数据库,并将数据库的连接信息配置到uploads-labs中。具体配置方式取决于你使用的数据库类型。 4. 配置uploads-labs:在项目的配置文件中,你需要修改一些配置项,包括数据库连接信息、密钥等。确保这些配置项与你的环境相匹配。 5. 运行uploads-labs:完成以上步骤后,你可以运行uploads-labs了。根据项目的要求,你可能需要运行一些命令来初始化数据库、创建表格等。 6. 访问uploads-labs:一旦uploads-labs运行起来,你可以通过浏览器访问它。通常情况下,uploads-labs会监听某个端口(比如80或8080),你可以通过访问对应的URL来使用它。 请注意,以上只是一个大致的搭建过程,具体的步骤可能因为你的环境和项目的不同而有所差异。在搭建过程中,你可能还会遇到一些其他的问题,需要根据具体情况进行解决。希望以上信息对你有所帮助!如果你需要更详细的指导,请提供更多的信息,我将尽力帮助你。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值