ISCC-2025-web-wp
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爆破一下
佛爷戈拿到源码
<?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')
做一个简单的测试,&即可传入参数
第四个坑在于变量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源码
<?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弱比较绕过即可
传参后又是一个脑洞题,算了这里不适合骂人
将明拆成两半是日和月,对应sun和moon,将moon顺序反转形成noom,跟sun拼接后得到suoom
李同理,木是wood,子是child,拼接后得到woolihc
按照这样的规律得到flag