NewStarCTF-2025-WEB-week1题解

一、multi-headach3

image-20251007232636930 image-20251007232651292

开局根据提示查看robots.txt,发现路径,直接拿到flag

image-20251007232759592

image-20251007233041367

二、strange_login

image-20251007233155568

image-20251007233259003

image-20251007233333290

根据提示是sql注入,直接用最简单的方式,结果直接出了flag,很新手。

image-20251007233445941 image-20251007233431112

三、宇宙的中心是php

image-20251007233641055

虽然但是,基本上php我在实战中没遇到过。。

image-20251007233838542

找到特殊路径,审计源码。

image-20251007234250756

求助大模型,搜一下函数用法

image-20251007234545144

image-20251007234626153

直接绕过

image-20251007234720190

四、黑客小W的故事(1)

image-20251007234830715

其实感觉是misc+基础知识

image-20251007234937090

此时查看抓到的包,发现有完整的会话json,没用

image-20251008104748402

发现新链接里面是有吉欧这个货币,直接改一下发送的包就过了

image-20251008104845233

image-20251008105038815

image-20251008105122754

进入第二关,基本上跟着提示一步一步按照http的各种方法发送一下即可拿到flag

image-20251008105337202

image-20251008105405762

image-20251008105538201

按照链接发送get请求

image-20251008105849968

image-20251008110129770

收到回复消息,再发delete请求,后面没啥东西了,一步一步走就行了。直接看图吧。

image-20251008110139591

image-20251008110427643

image-20251008110350769

image-20251008110626743

这里不去前端看会话了,直接找到对应的聊天记录

image-20251008110655712

去上面的链接看聊天记录

image-20251008111000174

直接发不行,得在ua头里面加对应的单词

image-20251008112704194

再加上一个单词

image-20251008112747278

拿到最终的链接

image-20251008112800825

拿到flag,感觉像misc,但就是基础知识image-20251008112924664

五、别笑,你也过不了第二关

image-20251008122552457

简单的前端小游戏,直接看js源码

image-20251008122631338

image-20251008122742684

找到对应的游戏通关判断逻辑,直接发包

image-20251008123016003

拿到flag

image-20251008123119401

六、我真得控制你了

image-20251008123214176

先查看js源码,是按钮无法点击

image-20251008123421847

image-20251008125859642

并且不能直接删去disable,因为有检测,但是可以通过加类的方式实现激活按钮

image-20251008125921279

最后进入新的界面,是一个登陆框

image-20251008125940583

提示是弱密码,直接弱口令爆破

image-20251008130028863

拿到密码

image-20251008131035021

image-20251008131049523

发现返回包里面有对应的路径,打开,又是php源码审计

image-20251008131301901

如下,直接喂给ai,找到绕过方式,然后拿到flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
error_reporting(0);

function generate_dynamic_flag($secret) {
return getenv("ICQ_FLAG") ?: 'default_flag';
}


if (isset($_GET['newstar'])) {
$input = $_GET['newstar'];

if (is_array($input)) {
die("恭喜掌握新姿势");
}


if (preg_match('/[^\d*\/~()\s]/', $input)) {
die("老套路了,行不行啊");
}


if (preg_match('/^[\d\s]+$/', $input)) {
die("请输入有效的表达式");
}

$test = 0;
try {
@eval("\$test = $input;");
} catch (Error $e) {
die("表达式错误");
}

if ($test == 2025) {
$flag = generate_dynamic_flag($flag_secret);
echo "<div class='success'>拿下flag!</div>";
echo "<div class='flag-container'><div class='flag'>FLAG: {$flag}</div></div>";
} else {
echo "<div class='error'>大哥哥泥把数字算错了: $test ≠ 2025</div>";
}
} else {
?>
<?php } ?>
检查位置 限制内容 允许字符 目的
is_array 不允许数组提交 防止 input[]=1 这类数组注入
preg_match(‘/[^\d*/~()\s]/’) 只允许数字、* / ~ ( ) 和空白 0–9 * / ~ ( ) 空格 防止代码执行、命令注入
preg_match(‘/[1]+$/’) 不允许纯数字和空格 必须包含至少一个操作符 防止无意义输入

image-20251008132429496

上面就是newstarctf 2025 week1的全部题目了,很简单的一周题目,但既然是week1,也合理。可以复习一些基础知识,随便做做反正也没花多长时间。


  1. \d\s ↩︎