2025SQCTF赛题复现
跟随DFS师傅的步伐来复现一下赛题
Misc
老君山的落日好美
暴力破解拿到jpg图片
接下来没什么思路,一种隐写一种隐写试,都没什么思路
尝试用stegdetect:
发现图片格式损坏,被添加了字节
怀疑有盲水印:
尝试watermark:
拿到flag:
SQCTF{luorihaomei}
孩儿们等我破军
第一关应该和矩阵有关:
那么这里猜想到的就是密码为数字,直接暴力破解
第二关给了六张图片和一个加密压缩包,图片放到010editor中,
首先发现的就是文件名和第一关的AB的值对应,其次查看文件格式:
- 发现文件尾异常
- 六张图片中只有15.png和其他图片不同
注意到文件尾,reflect中有We关键字,发现每个文件中都有reflect,并且都包裹关键字
可能是把每个都提取出来拼接,然后作为密码
写个脚本生成字典:
import itertools
# 定义6个不可拆分的段
segments = ["We", "c", "L1", "0", "e", "M"]
# 生成所有排列组合
all_permutations = itertools.permutations(segments)
# 写入文件(覆盖模式)
with open("combinations.txt", "w") as f:
for i, perm in enumerate(all_permutations, 1):
# 拼接为无空格字符串
combined = "".join(perm)
f.write(f"{combined}\n")
# 打印进度(每100个提示一次)
if i % 100 == 0:
print(f"已生成 {i}/720 个组合")
print("生成完成!文件保存在 combinations.txt")
字典爆破:
第三关,文件尾藏key——>base32解码,拿到密码
第四关,二维码一直扫码不到,索性自己拼了一个
flag{亲爱的召唤师:欢迎来到sqnuctf!}
哈哈
可以看到音频文件很有规律
尝试提取,宽的为0,长的为1
提取出来:
0101001101010001010000110101010001000110011110110011010101000010010000110110100001101001010011000110010001011111010010010011010101011111011100100110010100110100001100010011000101011001010111110110001101010101010101000100010101111101
思路:
二进制转字符
二进制转图片
随波逐流直接梭了
SQCTF{5BChiLd_I5_re411Y_cUTE}
花非花,雾非雾_0
文件上传页面,一段文字和bpm、wav文件
贝斯小心翼翼地捧着她精心收集的图片宝库,来到阿尔西四世先生的加密工作室。这位挑剔的图片鉴赏家戴着单片眼镜,仔细审视每一张图片。当他皱起眉头时,图片就会化作一串数字尘埃消失不见;而当他露出满意的笑容说嘻嘻不嘻嘻时,就会从西装内袋里取出一串神秘的魔法密文作为奖励——U2FsdGVkX19hDm7VsaTyR1yuDiGFF8wr7aoQfg==,这串字符在空气中闪烁着幽蓝色的微光。
wav文件为摩斯密码
解码后:
flag1:{fu429-
查看bmp文件LSB
flag2:wey23-vbd23
第三段脑洞:
密文:U2FsdGVkX19hDm7VsaTyR1yuDiGFF8wr7aoQfg==
密钥:嘻嘻不嘻嘻——>(base64)——>5Zi75Zi75LiN5Zi75Zi7
加密方式:阿尔西四世先生——>rc4加密
flag3:-278fgy17dh}
flag:flag{fu429-wey23-vbd23-278fgy17dh}
这是什么加密
խࢢൎࢺଳবɠઈчŧರڥXʦ୦พцঙԮࡉȥॺೡԋЭप೩ܥӉʣɉ5
宝宝你是一只白色大猫猫
SilentEye解密
残缺二维码,png宽高爆破
ez_music1
查看频谱图
FFT IFFT
根据已知加密脚本写解密脚本
YuanShen_Start!
第一层:
音频查看波形图,没太研究懂
SQCTF{yuan_shen_1s_a_good_game!}
第二层:
word文件
这里少了一块,有一张图片
移开拿到信息
SQCTF{f968566s-3fb6-4bfd-885a-d9e102528784}
图片查看十六进制数据:
010报错,查看文件尾:
78Nc4eeQNQLorCL6Vhh4tC8gumHm8aDi5apYDgaVoEzDvJMFUeXZn3BBhyn
base58+栅栏
解压拿到flag
piet
根据题目名字,npiet工具:
npiet.exe 1.png
SQCTF{Hello world!}
小巷人家
社工
SQCTF{西园寺}
love.host
文件尾藏了压缩包
提取出来解压拿到flag
阿尼亚
根据文件名联想道使用 steganography 工具
王者荣耀真是太好玩了
社工
Web
RceMe
长度限制<5,nl绕过直接读取
ezGame
测试:
失败后抓包,查看url:
修改分数拿到flag:
Ping
<?php
if (isset($_GET['ip'])) {
$ip = $_GET['ip'];
if (strpos($ip, ';') !== false) {
die('Hacker detected!');
}
system("ping -c 1 " . $ip);
} else {
highlight_file(__FILE__);
}
?>
源码中不允许包含分号,管道符绕过
Through
经过测试,url可以实现任意文件读取
目录穿越:
..././..././..././flag
商师一日游
第一关:
查看源码
第二关:
根据描述:
打开你的终端,构造一块fish牌的曲奇饼,上面刻下strong字样,便可获得强筋壮骨牌鱼食曲奇
曲奇代表cookie,将其改为strong
第三关:
进入终端,在devtool中找到复活币
devtool用F12打开
第四关:
robots.txt
第五关:
$a=$_GET['hhh'];
if(preg_match('/^php$/im', $a)){
if(preg_match('/^php$/i', $a)){
echo 'hacker';
}
else{
echo xxxxxxxxxxx;
}
}
else{
echo 'nonononono';
}
echo xxxxxxxxxxx;的操作是匹配第一个正则,不匹配第二个正则
i表示不区分大小写,m表示匹配换行
%0a绕过
?hhh=%0aphp
第六关:
点击按钮,删除disabled标签即可
第七关:
写了一句话木马,蚁剑连即可
@eval($_POST['memory']);
My Blog
信息搜集:
后备空间:
username : admin
password : secret123
目录扫码
找到登录页面
baby rce
<?php
error_reporting(0);
highlight_file(__FILE__);
extract($_GET);
$token = false;
if(isset($param1) && isset($param2)){
if(sha1($param1) == sha1($param2)){
$token = true;
echo "Level 1 pass\n";
}
}
class TYctf{
public $person = 20;
public $computer_number = 30;
function getNumber(){
if(isset($this->person)) {
echo $this->person;
}
}
function isFullUse(){
if($this->person != $this->computer_number){
echo "computer is lacking !!!\n";
}
else{
echo "computer is enough !!!\n";
}
}
static function getKey(){
include ("flag.php");
echo "Level 2 pass\n";
echo "You are winner, this is your reward: \n";
echo $flag;
}
}
if($token){
call_user_func($_POST['payload']);
}
?>
sha1碰撞数组绕过
调用getKey方法
无参之舞
查看源码:
账号:sqctf
密码:1q2w3e4r
爆破密码
后台是RCE,根据题目,可以想到无参rce
exp:
var_dump(scandir(phpversion()[1])); 查看当前目录
readfile('f1ag.php'); 读取文件
eeaassyy
右键被禁用,查看源码
url前面加上view-source:即可
CyberX安全团队纳新!
无限热爱,一起进步!