[网鼎杯 2018]Fakebook

发现有robots.txt可以打开

直接访问
下载之后直接打开

get方法中,curl_exec()如果使用不当就会导致ssrf漏洞。有一点思路了,而我们在御剑扫到了flag.php。猜测可能flag.php处于内网
ssrf漏洞成因:
SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。例如,黑客操作服务端从指定URL地址获取网页文本内容,加载指定地址的图片等,利用的是服务端的请求伪造。SSRF利用存在缺陷的Web
应用作为代理攻击远程和本地的服务器。
主要攻击方式如下所示。
- 对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。
- 攻击运行在内网或本地的应用程序。
- 对内网Web应用进行指纹识别,识别企业内部的资产信息。
- 攻击内外网的Web应用,主要是使用HTTP GET请求就可以实现的攻击(比如struts2、SQli等)。
- 利用file协议读取本地文件等。
http://payloads.net/ssrf.php?url=192.168.1.10:3306
http://payloads.net/ssrf.php?url=file:///c:/windows/win.ini
ssrf漏洞相关函数:
file_get_contents()、fsockopen()、curl_exec()、fopen()、readfile() |
所以在这里我们可以发现关于curl_exec函数的使用
认定为ssrf漏洞
ssrf访问的话可以使用伪协议
file://var/www/html/flag.php
比较经典的var/www/html/

apache的主要配置文件默认站点目录
回到题目
首先是先注册一个账号。之后进入用户界面发现no参数
尝试一下1 or 1=1–+
是可以注入的,所以应该可以尝试SQL注入
剩下的就是sql注入
?no=1 order by 4` |
到这里都没什么问题
过滤了空格但是可以/**/绕过,没什么大问题
到最后,我们可以发现账户密码都无所谓因为都是自己设置的
所以,接下来就是看data
O:8:”UserInfo”:3:{s:4:”name”;s:5:”admin”;s:3:”age”;i:12;s:4:”blog”;s:8:”123.blog”;}
根据注入可知,username是的二位。猜测data为第四个字段,所以我们可以尝试写入一些连接,通过反序列化的形式写入
所以构建payload:
?no=-1 union/**/select/**/1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:5:"mochu";s:3:"age";i:7;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'
写入data字段
在页面代码中发现一串base64编码

翻译一下
找到flag