【XCTF高手进阶区】web7_warmup writeup(二)

web7_warmup

原题链接

key:php代码审计+文件包含+URL二次编码

 

①环境打开后页面显示一个滑稽👇

查看源代码后发现线索source.php👇

 

②在地址栏后加上/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)) {    #$page不存在或不是字符串
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {    #$page存在于$whitelist数组
                return true;
            }

            $_page = mb_substr($page,0,mb_strpos($page . '?', '?')    #截取$page中首次出现?之前的部分
            );
            if (in_array($_page, $whitelist)) {    #该部分是否存在于$whitelist数组
                return true;
            }

            $_page = urldecode($page);    #对$page进行url解码
            $_page = mb_substr($_page,0,mb_strpos($_page . '?', '?'));    #截取$page中首次出现?之前的部分
            if (in_array($_page, $whitelist)) {    #该部分是否存在于$whitelist数组
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file'])    #检查file变量是否为空
        && is_string($_REQUEST['file'])    #检查file变量是否是字符串
        && emmm::checkFile($_REQUEST['file'])    #调用检查函数checkFile()
    ) {
        include $_REQUEST['file'];    #包含并运行指定文件
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

 

③进行代码审计,除了source.php还发现了一个hint.php

文件名都暗示到这程度了,必须得去看看,果然获得了重要线索👇

 

④回来继续代码审计👇

首先定义了一个类,类里面有一个检查函数

检查函数里首先定义了一个白名单变量($whitelist),随后是一系列if语句,能返回true或false

类之后有一个if语句,同时满足三个条件后会包含并运行文件变量file,这个file是我们自己GET或POST提交的变量

这三个条件分别是:

(1)检查file变量是否为空

(2)检查file变量是否为字符串

(3)检查函数返回值是否为true

传参变量file肯定不是空的(不然我们待会传它干嘛),当然也一定是字符串格式

关键问题就在于怎么让检查函数checkFile()返回值为true

现在我们再回来看检查函数checkFile()

第一个if语句,如果$page不存在或不是字符串,返回false

第二个if语句,如果$page存在于$whitelist数组中,返回true

第三个if语句,截取$page中首次出现?之前的部分,如果该部分存在于$whitelist数组中,返回true

第四个if语句,先对构造的payload进行url解码,再截取传进参数中首次出出现?之前的部分,如果该部分存在于$whitelist中,返回true

 

⑤在这里我们不再用第三个if语句

第三个if语句解题————XCTF高手进阶区 web7_warmup writeup(一)

运用第四个if语句也可以达到目的

所以payload的前半部分就是source.php或hint.php,再用一个?截断,后面加上我们想本地包含并执行的文件路径就可以了

问题是现在我们只知道了目标文件名是ffffllllaaaagggg,还不知道它的路径

不妨先来看看include()函数定义👇

因为我们的参数是有/../../../../这样的路径,所以符合最后一段话:如果定义了路径,就会忽略/前的字符串而去找/../../../../../../ffffllllaaaagggg这个文件

父目录的父目录的父目录…………最终只要有足够的../我们就可以找到目标文件

最后别忘了到URL编码网站给source.php或hint.php后的内容进行编码

 

⑥下面两个payload任选其一执行👇

http://111.200.241.244:51149/source.php?file=source.php%3f%2f..%2f..%2f..%2f..%2fffffllllaaaagggg
http://111.200.241.244:51149/source.php?file=hint.php%3f%2f..%2f..%2f..%2f..%2fffffllllaaaagggg

得到flag👇

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: pure_color xctf是一个CTF比赛平台,致力于举办和推广网络安全竞赛。 pure_color xctf的目标是为安全爱好者和专业人士提供一个学习、切磋和交流的平台。这个平台上举办的比赛覆盖了各种网络安全领域,包括但不限于网络攻防、密码学、逆向工程等。通过参与这些比赛,参赛者可以提升自己的技能,了解最新的安全威胁和攻击技术,锻炼解决问题的能力。 pure_color xctf的比赛模式多样,可以是个人或团队参与。参赛者需要在限定的时间内完成一系列的题目,这些题目可能包含漏洞分析、编程挑战、数据分析等。比赛过程中,参赛者需要运用各种技术手段,如渗透测试、代码审计、漏洞利用等,解决题目的要求。参赛者不仅需要具备网络安全相关的知识,还需要具备良好的团队合作和解决问题的能力。 此外,pure_color xctf也为参赛者提供了一个交流平台。比赛期间,参赛者可以在平台上与其他选手交流经验、讨论解题思路。参赛者也可以通过竞赛结果来评估自己的能力,并与其他选手进行切磋比拼。 总之,pure_color xctf是一个举办网络安全竞赛的平台,旨在为安全爱好者和专业人士提供学习和交流的机会,促进网络安全技术的发展。 ### 回答2: pure_color xctf 是一项竞技性的网络安全挑战赛。XCCTF 是全球知名的网络安全竞赛组织之一,而 pure_color 是该竞赛组织内的一项赛事。该赛事旨在提升参赛者的网络安全技能和知识,让他们在一个仿真的网络环境中进行攻防对抗。 在 pure_color xctf 中,参赛队伍将根据题目要求进行网络攻击和防御。这些题目有不同的难度级别,并涵盖了各种不同的网络安全技术和攻击类型。参赛队伍将需要利用他们的知识和技能,像真实的黑客一样去攻击系统漏洞,获取目标系统内的敏感信息或是直接控制目标系统。同时,他们也需要通过搭建防御策略和系统来保护自己的系统免受攻击。 pure_color xctf 不仅仅是一个交流学习的平台,也是一个展示能力的舞台。优胜的参赛队伍将会被邀请参加更高级别的网络安全竞赛和会议,进一步提升他们的技能并扩展职业网络。此外,pure_color xctf 也为参赛者提供了一个找到职业机会的平台,很多安全公司和组织会在赛事期间招聘优秀的选手。 总而言之,pure_color xctf 是一个有挑战性的网络安全竞赛,旨在通过攻击和防御对抗提升参赛者的技能,并为他们提供职业发展和展示的机会。同时,这个赛事也在促进网络安全领域的交流和合作,为提升整个网络安全行业的水平做出贡献。 ### 回答3: pure_color xctf 是一个CTF(Capture The Flag,夺旗赛)竞赛平台。CTF是一种网络安全竞赛,旨在让参赛者通过解决一系列的密码学、逆向工程、漏洞利用等问题来获取旗标,比赛者可以通过这些旗标来获取积分并竞争排名。 pure_color xctf 平台是一个为CTF竞赛提供的一个在线环境,类似于一个实验室,用于举办CTF比赛。在这个平台上,参赛者可以注册账号并加入已经发布的CTF赛事中。赛事中的题目被分为不同的难度级别,涵盖了各种安全领域的知识。参赛者需要通过解决题目中的任务来获取旗标,并将其提交到平台上进行验证。在比赛结束后,将根据参赛者解决的题目数量、用时、积分等因素来计算最终排名,并颁发奖励给获胜者。 pure_color xctf 提供了逼真的仿真环境,使得参赛者能够在一个安全的网络环境下进行实时的攻防演练。平台上的题目多样化且具有挑战性,旨在让参赛者将所学的理论知识应用到实际场景中去,并培养解决问题和团队合作的能力。同时,pure_color xctf 还为参赛者提供了交流平台,方便他们在比赛过程中与其他参赛者交流经验、技巧以及解题思路。 总之,pure_color xctf 是一个提供CTF竞赛平台的在线环境,旨在鼓励参赛者在安全领域中深入学习和实践,并通过解决各种挑战赛题目来提升技能和知识水平。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mitch311

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值