竞赛时间:5月24日8:00—5月25日12:00(共28小时)
竞赛题型:涵盖 Web、Reverse、Pwn、Crypto、Misc 等主流赛题方向
奖项设置:前20名获奖,设一、二、三等奖及优胜奖,颁发荣誉证书及赞助奖品
Rank: 10
MISC
签到
微信公众号搜索关注:”HuhstSec实验室”,发送: “H&NCTF2025,Game start!!!” 获取flag
发关键词。
H&NCTF{g4me_st4rtup_initialized_succ3$$}
乱成一锅粥了
小肖望着乱成一锅粥的电脑心如死灰,既然乱成一锅粥不妨低头将它喝下(flag为H&NCTF{})
从pcapng文件中提取出9个zip文件,解压成文件夹,查看里面txt文件名均为数字的md5值,按顺序提取txt内容连接,是png文件的base64。
分别输出9个png:
1 | from hashlib import md5 |
得到二维码的9个碎片,拼接,扫描:H&NCTF{This_wont_be_difficult_for_you}
芙宁娜的图片
旅行者在追踪丘丘人的时候无意间找到了一张关于芙宁娜的老照片,派蒙拿起的时候感觉比普通的照片的重,发现后面有一行字,但你们都不会丘丘人语,推断这张图片这和丘丘人的下一步动作有关,你能帮旅行者破译出这个图片的信息吗?(flag为H&NCTF{})
txt中,brainfuck得到 O&NPTF{Y0u_yepognizeq_the_Couphu's_psog.}
。
根据flag头,vigenere直接尝试出key=hanaaaa 时,flag为:
H&NCTF{Y0u_recognised_the_Chuchu's_plot.}
。
png图没啥用。
谁动了黑线?
你接到一份神秘交易数据,隐藏着一条错综复杂的“黑线”,请破解其中隐藏的秘密 (最后的flag包上H&NCTF{}提交)
hint1:尝试还原“真正”的交易链,关键在hash
hint2:flag内容为一段有意义的字符串
观察txhash一列,base58解码后,是8位数字+8位字符串的形式,从中找出后8位字符串包含小写字母的项,按对应前8位数字大小顺序连接:
1 | import pandas as pd |
H&NCTF{little_dog_is_Aomr!!}
签退
微信公众号搜索关注:”林枫云”,发送”再见H&NCTF2025,期待H&NCTF2026”,获取flag
发关键词。
H&NCTF{succ3ssfu1_134v3_ch3ck0u7_c0mp1373d}
问卷
为2025H&NCTF留下最后的回响:https://wj.wenjuanjia.com/?questionId=czu4fckcGJDyHDJfT%2BNwDQ%3D%3D
答问卷。
H&NCTF{Thank you for participating in 2025H&NCTF!}
CRYPTO
ez-factor
哈基坤的签到题++
ACD问题,参考 2024高校密码挑战赛 - 12,构造格,能够规约出的小根上界约为243bit,本题 $r \in (2^{247},2^{248})$,爆破248-243=5位。
1 | from Crypto.Util.number import * |
H&NCTF{ac354aae-cb6b-4bd1-a9cd-090812b8f93e}
ez-factor-pro
哈基坤的签到+1QAQ!
同上题,只不过本题 $r \in (2^{251},2^{252})$,爆破252-243=9位。
1 | from Crypto.Util.number import * |
H&NCTF{ac354aae-cb6b-4bd1-a9cd-090812b8f93e}
lcgp
哈基坤只会出签到题
LCG+DLP。
1 | from Crypto.Util.number import * |
H&NCTF{7ecf4c8c-e6a5-45c7-b7de-2fecc31d8511}
为什么出题人的rsa总是ez
复习一下。。。大佬出题全是ezrsa,害苦我了,提交记得加上H&NCTF{}。
part1参考angstromCTF 2024 - BLAHAJ,造格求解;
part2是Common Prime RSA。
1 | from Crypto.Util.number import * |
H&NCTF{I wish you success in your cryptography career}
哈基coke
哈基人完成这个签到吧
猫脸变换,参数矩阵求逆乘回去。
1 | import cv2 |
H&NCTF{haji_coke_you_win}
数据处理
我不会出题,应该很简单
先DLP求出替换后的new_flag,再爆破变表中未知的7位数,替换后判断结果是否包含flag头。
1 | from Crypto.Util.number import * |
H&NCTF{cut_cut_rrioajtfijrwegeriogjiireigji}
WEB
Really_Ez_Rce
是..是…是…rce,我们有救了
数组绕过intval + RCE拆分关键词绕过。
payload:
1 | http://27.25.151.198:33660/?Number[]=1 |
ez_php
简简单单的looploop~~
构造反序列化链,去掉最后花括号绕Exception。
先列目录:
1 | from phpserialize import * |
1 | POST |
得到文件名ofl1111111111ove4g,再读文件:
1 | from phpserialize import * |
1 | POST |
REVERSE
F**K
FK,FK,F*K
代码逻辑:
先动态打乱base64表,输入经过变表base64编码,每4 字节一块逐块经过MD5后,混淆,得到密文。
先还原原md5值,分段爆破4字符,连接形成base64,再爆破码表。
1 | from hashlib import md5 |
H&NCTF{Ye5h!!!I_Lik333_bur9~^o^}
签到re
很简单的加密,一梭就出来了
代码逻辑:
key的sha256的前四字节作为key,明文每4字节做矩阵乘法。还原:
1 | import numpy as np |
H&NCTF{840584fb08a26f01c471054628e451}
PWN
pdd助力
pdd说你是最幸运的人
随机数用ctypes.cdll模拟,最后是一个ret2libc。
1 | from pwn import * |
shellcode
seccomp-tools查sandbox,只有OR没有W,侧信道爆破方式攻击:
1 | from pwn import * |
三步走战略
很简单的一个小东西
常规ORW。
1 | from pwn import * |
FORENSICS
ez_game
附件通过网盘下载:https://pan.baidu.com/s/1Rk1sm5P-_x-6kF7Zy2_4-w?pwd=tbik flag用H&NCTF包裹
autopsy分析载入vhd文件分析,在 $RECYCLE.BIN
文件夹下找到zip文件,ARCHPR用rockyou.txt爆破出密码:~!@#$%^&*()_+
,解压是一个flag.drawio。
再在磁盘下找到readme.txt,内容:
1 | 这次是个简单的取证小游戏 |
用 https://app.diagrams.net/ 导入drawio文件,得到flag,换头:
H&NCTF{YOU_R_SSSO_COOL}
OSINT
Chasing Freedom 2
Feel to your heart’s content.
flag格式: H&NCTF{月份和日期时间(0401)-地点}hint1:地点无需添加省、市、县、区
hint2:结果为某某灯塔
hint3:日期时间那里不需要()包裹
hint4:注意错别字和无意间的空格
jpg属性查看,得到拍摄日期:0504。
百度识图可出是东庠岛灯塔。
H&NCTF{0504-东庠岛灯塔}
Chasing Freedom 3
Feel to your heart’s content.
flag格式: H&NCTF{月份和日期时间(0401)-码头-船名}hint1:地点无需添加省、市、县、区
hint2:flag格式修正
hint3:日期时间那里不需要()包裹
hint4:注意错别字和无意间的空格
jpg属性查看,得到拍摄日期:0504。
百度识图可出是平潭岛码头,图里有船名不完整名称,搜索可出。
H&NCTF{0504-流水码头-岚庠渡3号}