内网访问
打开后什么也没有
url:
http://challenge-15dd8a3b6071b41e.sandbox.ctfhub.com:10800/?url=_
根据提示
构造?url=127.0.0.1/flag.php
得到ctfhub{7505498e57596c29d6e2b6c6}
伪协议访问文件
常见伪协议
file:/// – 本地文件传输协议,主要用于访问本地计算机中的文件。
dict:// – 字典服务器协议,dict是基于查询相应的TCP协议。
sftp:// – SSH文件传输协议或安全文件传输协议(Secure File Transfer Protocol)是一种简单的基于lockstep机制的文件传输协议,允许客户端从远程主机获取文件或将文件上传至远程主机。
ldap:// – 代表轻量级目录访问协议。它是IP网络上的一种用于管理和访问分布式目录信息服务的应用程序协议。
tftp:// – 基于lockstep机制的文件传输协议,允许客户端从远程主机获取文件或将文件上传至远程主机。
gopher:// – 是一种分布式文档传递服务。利用该服务,用户可以无缝地浏览、搜索和检索驻留在不同位置的信息。
https://www.cnblogs.com/-mo-/p/11673190.html
Linux系统下,网站路径是 /var/www/html/,所以用php伪协议访问这个路径下的flag.php文件。
构造
?url=file:////var/www/html/flag.php
页面回显 ???
查看源代码发现Flag is ctfhub{d2cdbfe00e2ed4d348479a56}
端口扫描
题目提示端口在8000-9000,因此直接扫就可以了。这里我们需要使用dict伪协议来扫描,因为dict协议可以用来探测开放的端口。
发现端口是8056.直接进行访问,就可以得到flag了。
POST请求
访问flag.php,告诉我们必须要从本地访问
源代码有key
需要我们用gopher协议去用post key到flag.php,不过需要注意的是要从127.0.0.1发送数据。使用方法:gopher://ip:port/_payload(注意下划线)
特别要注意Content-Length应为字符串“key=d93819c4c1a18dc606dc5c6486f77227”的长度。
进行url三次编码即(注:第一次url编码后要手动在所有%0A前面加上%0D,再进行后续编码)
上传文件
先看看flag.php
没有提交选项,F12 修改前端代码,
<input type="submit" name="submit" >
看一下flag.php源码
发现会判断文件是否为空。 上传一个非空文件,bp拦截。
修改host为127.0.0.1:80,整段请求除了
全都复制下来url编码一次,%0a换成%0d%0a后,再url编码一次
拼接payload
FastCGI协议
https://blog.csdn.net/qq_45774670/article/details/109568987
https://blog.csdn.net/bmth666/article/details/104836708/
Redis协议
当把payload上传之后就可以用cmd参数在shell.php里操作。
工具:https://github.com/tarunkant/Gopherus
我们先将payload拼接在url后面
然后再
发现过滤了空格,用${IFS}代替
URL Bypass
1.利用?绕过限制url=https://www.baidu.com?www.xxxx.me
2.利用@绕过限制url=https://www.baidu.com@www.xxxx.me
3.利用斜杠反斜杠绕过限制
4.利用#绕过限制url=https://www.baidu.com#www.xxxx.me
5.利用子域名绕过
6.利用畸形url绕过
7.利用跳转ip绕过
数字IP Bypass
其他进制数代替
127.0.0.1这个IP地址我们可以改写成:
- 8进制格式:0177.00.00.01
- 16进制格式:0x7f.0x0.0x0.0x1
- 10进制整数格式:2130706433
- 在linux下,0代表127.0.0.1,http://0进行请求127.0.0.1
- 也可以127.0.0.1—>localhost
得到flag
302跳转 Bypass
DNS重绑定 Bypass
使用DNS重绑定,在网络上存在一个很神奇的服务,http://xip.io 当我们访问这个网站的子域名的时候,例如127.0.0.1.xip.io,就会自动重定向到127.0.0.1。
即: