Skip to content

宇宙的中心是 PHP

本题考查前端源代码分析、PHP 函数理解及绕过技巧。

收集信息

进入后是一个前端小页面,会发现直接F12或者右键是没办法打开开发者工具的,这里提供几种办法查看源代码

  1. 先开启开发者工具再访问网站
  2. 使用 Ctrl + Shift + I
  3. 手动在 url 处输入 view-source: 前缀

然后就可以看到下一关的入口提示(这里以第三个方法为例)

level1 示例

plaintext
<!-- 你还是找到了......这片黑暗的秘密 -->
<!-- s3kret.php -->

访问这个 php 文件可以看到代码

php
<?php
highlight_file(__FILE__);
include "flag.php";
if(isset($_POST['newstar2025'])){
    $answer = $_POST['newstar2025'];
    if(intval($answer)!=47&&intval($answer,0)==47){
        echo $flag;
    }else{
        echo "你还未参透奥秘";
    }
}

绕过

这里是想考查一下遇到未知函数的检索能力。

先来分析一下函数逻辑

首先代码要求 POST 名为 newstar2025 的参数,随后将参数以两种方式传入 intval 函数,我们可以到 PHP 的文档里查阅一下这个函数的作用和用法 PHP: intval Manual

php-intval

可以看到,intval($value)intval($value, 0) 的区别在于后者会根据输入字符串的格式自动匹配进制,而前者则是默认的十进制

因此本体的绕过方式就非常明朗了,只需要传入一个其它进制的数字 47 即可,以下 POST 传参均可

plaintext
newstar2025=057
newstar2025=0x2f
newstar2025=0b101111