fakebook-wp

题目:

图片[1]-fakebook-wp-Drton1博客

进来两个按钮 一个登录 一个加入

先试试登录:

试了试弱口令 跟万能密码

图片[2]-fakebook-wp-Drton1博客

无果

于是去另一个页面:

图片[3]-fakebook-wp-Drton1博客

这几个参数 但是这个blog不知道要填啥

随便填他就弹窗说 博客不存在:

图片[4]-fakebook-wp-Drton1博客

这里顿时不知道怎么搞了,去看看robots

图片[5]-fakebook-wp-Drton1博客

找到了一个文件 user.php.bak 访问下载了一个php源码

图片[6]-fakebook-wp-Drton1博客

打开把源码搞得vscode看着舒服:

图片[7]-fakebook-wp-Drton1博客

开始进行代码审计

整体看下来 这就是一个用户信息的类

一个一个分析:

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_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if($httpCode == 404) {
            return 404;
        }
        curl_close($ch);

        return $output;
    }

curl_init() 这个函数初始化一个cURL会话

然后把传进来的url 进来 进行访问 如果该页面不存在就返回404

如果存在就返回 curl_exec($ch); 就是返回url。

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);
    }

这里可以看到他对我们的传进来的博客 传进了 get函数里 也会检测我们传进来 的函数是不是url格式

那么到这里我们大概就理清了他的逻辑

Join里面的blog要写url。不然他检擦不是这个格式就不给通过。

那么我们随便构造一个url: https://123.com

图片[8]-fakebook-wp-Drton1博客

成功,这个admin还是超链接 点击试试:

图片[9]-fakebook-wp-Drton1博客

熟悉的url里面参数 这里第一时间检测一下有没有sql注入 输入个单引号:

图片[10]-fakebook-wp-Drton1博客

出货!

扔sqlmap跑一下 sqlmap没跑出来数据库名 只是说有注入。

图片[11]-fakebook-wp-Drton1博客

于是进行手工注入看看:

我们测出来是四个字段 但是这里被拦截了 说明union select 这俩被拦截。

图片[12]-fakebook-wp-Drton1博客

于是进行注释绕过,成功

拿到数据库名 fakebook

图片[13]-fakebook-wp-Drton1博客

拿表名:

图片[14]-fakebook-wp-Drton1博客

拿字段:

图片[15]-fakebook-wp-Drton1博客

拿用户

图片[16]-fakebook-wp-Drton1博客

拿密码 一个md5

图片[17]-fakebook-wp-Drton1博客

我以为登录后台拿flag 解完密拿去登录 发现 啥也没有。

图片[18]-fakebook-wp-Drton1博客

于是我又以为flag在数据库里面 ,继续测 data

图片[19]-fakebook-wp-Drton1博客

发现是序列化后的值,这里我并没怎么在意 反正就是没有flag。

看着旁边的报错路劲 我想起来 sql有一个读取函数 我猜测flag.php在这个报错目录下

图片[20]-fakebook-wp-Drton1博客

于是进行执行 然后查看源代码 拿到flag。

图片[21]-fakebook-wp-Drton1博客

这是我自己想到的解法,看了官方的wp 原来人家不是这样考的。

人家是考序列化的

图片[22]-fakebook-wp-Drton1博客

单走一个6 管他白猫黑猫 抓到老鼠就是好猫。 不过他这个也作为一个扩展思路。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论