IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Upload labs -> 正文阅读

[PHP知识库]Upload labs

Pass -01(js检查)

题目基于前端js过滤,只能上传图片格式的文件,所以我们用一句话木马,改后缀上传后,用burp抓包,修改文件后缀为php,然后用蚁剑连接,
注意:
文件没有上传在具体题目中的文件夹中,所以我们在用蚁剑连接的时候,需要注意其地址

Pass -02(只验证Content-type)

根据源代码我们可以发现,这一关是常见验证中的文件类型验证,也就是验证MIME信息在这里插入图片描述
所以这里可以直接上传php文件,然后用burp抓包,修改content-type为图片类型:

image/jpeg、image/png、image/gif

然后蚁剑连接

Pass -03(黑名单绕过)

先上传一个php文件,发现,上传设置了黑名单,
在这里插入图片描述
查看源代码:
在这里插入图片描述

所以可以通过上传其他可解析文件,.phtml .phps .php5 .pht
前提是apache的httpd.conf中有配置代码

所以我们这里可以上传一个php3, phtml,phps .php5 .pht文件实现绕过,注意这题当我们上传的时候文件名会变,我们可以在burp的repeater数据包回显中看,然后蚁剑连接

注意:
上传后文件名会发生改变

Pass -04 (.htaccess绕过)

查看源代码会发现其过滤了很多文件格式,
这时,我们可以尝试上传一个.htaccess配置文件,它将上传图片当作php代码进行解析,首先创建一个.htaccess文件,里面写上代码

SetHandler application/x-httpd-php

然后我们可以直接上传一个改为图片格式的一句话木马,然后用蚁剑直接连接图片名,即可成功

Pass -05(大小写绕过)

在这里插入图片描述与四题不同的是没有将其后缀转换为小写
因此可以使用大小绕过,上传文件后缀为.Php的文件,然后蚁剑连接即可

Pass -06(空格绕过)

查看源码,对比前面的题,会发现这里没有删除文件首尾的空格,所以可以用空格进行绕过
我们上次文件尝试抓包在文件名后面加一个空格
注意:如果我们是在上传前修改文件名的时候加,上传的时候会被自动去掉,所以我们这里需要抓包,然后添加空格

Pass -07(点绕过)

观察对比前面关卡的源代码,可以发现其没有对点进行过滤,所以上传php文件抓包后在其后缀后面添加一个.,完成绕过

Pass -08(::$DATA绕过)

观察对比前面关卡的源代码,可以发现其没有对点进行过滤,所以上传php文件抓包后在其后缀后面添加一个::$DATA,完成绕过

Pass -09(拼接绕过)

查看源代码后,发现它先将后缀名后的.删除,然后删除空格。
我们可以把文件后缀改成.php. .,经过代码处理后变成.php.绕过
上传php文件,然后抓包,改后缀,蚁剑连接

Pass -10(双写绕过)

在这里插入图片描述
发现第八行的函数:

$file_name = str_ireplace($deny_ext,"", $file_name);

这个代码的意思就是把带有黑名单中的后缀替换为空。
这时我们考虑双写绕过。如上传的.pphphp就会变成.php绕过

总结:
1-10题都可以用.php. .来绕过

Pass -11(GET型0x00截断)

查看源代码,可以得知是一个白名单,只允许上传jpg,png,gif格式的文件。但是上传路径是可以控制的,可以使用%00进行截断。%00只能用于php版本低于5.3的。
在这里插入图片描述
利用正常上传后的文件会保存为:/upload/2.php%002.jpg,文件在读取名字的时候,因为被%00截断,所以只会读取到%00就会被截断停止,从而以php文件执行

Pass -12(POST型0x00截断)

Pass -13(图片马)

分析源代码得:
在这里插入图片描述
其利用fread函数来判断是否是图片
源码意思读取上传文件的前两个字节内容,unpack解码后,使用intval转换为10进制,默认为10进制,根据转换后的结果判断图片类型。

图片马生成:将图片和脚本放在同一目录下,执行cmd命令,在cmd中执行(这里的图片要是真是的图片)

copy /b 图片+php脚本 新文件名

然后上传图片,得到上传后的图片名和地址
注意:图片马是运用文件包含漏洞,通过文件包含漏洞来运行图片中得代码,所以需要一个解析文件,来运行图片马,如图:
在这里插入图片描述
解析代码是:

 <?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
    include $file;
}else{
    show_source(__file__);
}
?> 

其中file是图片地址,得url是:

http://5063f052-6da9-4a3d-aa1f-331c250cf86c.node4.buuoj.cn:81/include.php?file=upload/xxx.jpg

当图片马中的代码被解析后,再运用蚁剑连接,其连接url地址就是上面得那个地址

Pass -14(图片马)

利用getimagesize($filename)函数判断文件是否为图片

Pass -15(图片马)

使用exif_imagetype()函数判断是否为图片文件

Pass -16(图片马+二次渲染)

验证过程:判断后缀与MIME类型是否符合要求,符合后生成新图像(内容不正确会失败,返回false,相当于多了一次验证),生成新图像失败就unlink删除,成功就根据系统时间给文件命名,再通过imagejpeg类似函数使用原图像资源创建新图像(二次渲染)。相关函数说明:

basename(string $path [,string $suffix]) //返回路径中的文件名部分
imagecreatefromjpeg(string $filename)
imagecreatefrompng(string $filename) 
imagecreatefromgif(string $filename) //由文件或URL创建一个新图像,内容不对则失败返回false,成功后返回图像资源
srand([int $seed ]) //用seed播下随机数发生器种子
strval(mixed $var) //返回字符串类型的var
imagejpeg(resource $image [,string $filename [,int $quality]])//从image图像以filename为文件名创建一个JPEG图像
imagepng(resource $image [,string $filename]) //从 image 图像以filename为文件名创建一个PNG图像或文件
imagegif(resource $image [,string $filename]) //从 image 图像以filename为文件名创建一个GIF图像或文件

先合成一个gif一个图片马,然后上传,抓包得到上传图片的地址,下载上传的图片,对比上传前的图片,找到未改变的地方(很多地方都可以,但我以为这个地方很小,以为要慢慢找,hhh),插入一句话木马后,再次上传这张图片,得到其新的图片名字,然后就跟上一关差不多,解析图片里面的木马,蚁剑连接。
总结:千万不要想当然,用嘴做题,

Pass -17(白名单验证,条件竞争)

这一题在buu上面因为访问过于频繁,后面直接被禁了,自己本地有点不太敢搞,我怕我的系统似乎承受不了,,,
其原理就是利用它会将我们上传的文件短暂的储存在服务器中,然后

Pass -18(白名单验证,图片马)

个人认为这里和13关差不多,只不过这里需要知道上传后图片重命名后土木的名字,然后解析图片马,再用蚁剑连接

Pass -19(黑名单验证,点号绕过)

两种方式绕过:
1.这里会上传文件的名称,我们可以用burp抓包,然后再修改,改为php,然后用%00截断,再加上jpg后缀,完成绕过
2、文件夹的形式,这里会构成upload/xxx.jpg,但如果我们这里修改为upload/upload/xxx.php/.,我们在上传验证的时候,会以为其文件名为.
但实际上我们上传的文件名确为upload/xxx.php

Pass -20(白名单绕过,图片马)

数组,分析其代码,得到其上传的时候会将图片名分为数组,分别为:文件名.,后缀,在这里我们通过修改其分组,完成上传,将其分组数据修改为:文件名.php/., ,后缀,类似于文件夹上传,验证的时候会正常通过,最终为:文件名.php/.jpg,但上传后的文件名确为:文件名.php

总结:20到题边看wp,遍做,用了整整一天,怎么说呢!在做题的过程中会遇到很多网上的wp都没提过的问题,比如蚁剑测试连接的时候报错,但保存后却可以正常连接,你敢信?再比如burp抓不到本地的数据包,或者是在改gif图片,对比前后有哪些地方不一样的时候,你以为只是很少的一部分不一样,但其实呢?很容易找出不一样的地方来,emmm,其中还有在本地搭建的时候,要注意php版本的问题,可能现在的php版本不支持,或者其它的设备软件问题,总之在做题的过程中,要学会有自己的思考,要善于运用百度,牢记:纸上得来终觉浅,绝知此事要躬行,还是要多刷题,准备过几天不看wp,自己来个二刷。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 11:37:02  更:2022-04-28 11:37:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 20:10:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码