fhacker(极客大挑战原题,但是有sss自创神秘题目)

rsa

一把梭image-20250401135732244

共模攻击

我是废物,AI写的脚本

from Crypto.Util.number import long_to_bytes

n = 19742875423645690846073637620470497648804310111201409901059297083827103813674034450200432098143959078292346910591785265323563248781526393718834491458926162514713269984791730816121181307827624489725923763353393879316510062227511469438742429290073999388690825732236465647396755899136346150862848924231619666069528077790933176798057396704758072769660663756346237040909579775389576227450505746914753205890194457812893098491264392293949768193694560954874603451253079446652049592976605414438411872223250039782381259212718733455588477129910357095186014496957765297934289263536712574572533650393220492870445376144568199077767
e1 = 911
e2 = 967
c1 = 18676091924461946809127036439355116782539894105245796626898495935702348484076501694838877829307466429933623102626122909782775514926293363853121828819237500456062111805212209491398720528499589486241208820804465599279152640624618194425740368495072591471531868392274503936869225072123214869399971636428177516761675388589238329574042518038702529606188240859751459632643230538522947412931990009143731829484941397093509641320264169403755707495153433568106934850283614529793695266717330769019091782929139589939928210818515744604847453929432990185347112319971445630830477574679898503825626294542336195240055995445217249602983
c2 = 4229417863231092939788858229435938841085459330992709019823280977891432565586698228613770964563920779991584732527715378842621171338649745186081520176123907689669636473919678398014317024138622949923292787095400632018991311254591786179660603414693984024161009444842277220189315861986306573182865656366278782315864366857374874763243428496061153290565891942968876789905670073321426112497113145141539289020571684634406829272902118484670099097148727072718299512735637087933649345419433312872607209633402427461708181971718804026293074540519907755129917132236240606834816534369171888633588190859475764799895410284484045429152

def extended_gcd(a, b):
    # 迭代实现扩展欧几里得算法
    old_r, r = a, b
    old_s, s = 1, 0
    old_t, t = 0, 1

    while r != 0:
        quotient = old_r // r
        old_r, r = r, old_r - quotient * r
        old_s, s = s, old_s - quotient * s
        old_t, t = t, old_t - quotient * t

    return old_r, old_s, old_t

def modinv(a, mod):
    g, x, y = extended_gcd(a, mod)
    if g != 1:
        raise ValueError("Modular inverse does not exist")
    else:
        return x % mod

def mod_pow(a, exp, mod):
    if exp == 0:
        return 1
    if exp < 0:
        a_inv = modinv(a, mod)
        return pow(a_inv, -exp, mod)
    else:
        return pow(a, exp, mod)

g, s, t = extended_gcd(e1, e2)

term1 = mod_pow(c1, s, n)
term2 = mod_pow(c2, t, n)

m = (term1 * term2) % n

flag = long_to_bytes(m)
print("flag:", flag)

签到题

凯撒加密

前缀是SYC,随波逐流解一下就好image-20250401140237004

dp

image-20250401140424428

Truth of Word

第一段是字体改成白色了image-20250401140624045

第二段,注意到docm是带有宏的格式,查看宏即可image-20250401140818498

第三段把后缀改为zip,解压在\word\media中有图片image-20250401141015773

ez_pcap_1

smb流中有传输flag.txt.txt,导出后查看即可image-20250401141221934

ncoCRT

我是废物,ai写的代码

from sympy.ntheory.modular import crt
from Crypto.Util.number import long_to_bytes

p = [
    1921232050179818686537976490035,
    2050175089402111328155892746480,
    1960810970476421389691930930824,
    1797713136323968089432024221276,
    2326915607951286191807212748022
]
c = [
    1259284928311091851012441581576,
    1501691203352712190922548476321,
    1660842626322200346728249202857,
    657314037433265072289232145909,
    2056630082529583499248887436721
]

m, _ = crt(p, c)
flag_bytes = long_to_bytes(m)

# 直接去除所有末尾的 \x01(无需截取长度)
flag = flag_bytes.rstrip(b'\x01')

print(f"FLAG: {flag.decode()}")

乌龟

mmsstv扫描得到Be4uti7ulSun5e7,屏幕截图 2025-03-04 160335将其用所密钥使用deepsound 用silenteye不行提取得Secrect.txt . 查询得知是logo语言,使用logo 语言运行,并辨认字迹得flag

屏幕截图 2025-03-04 164307

ez_jpg

不难发现是b64,cyberchef解码后一眼看到 9dff 拖到最后发现 8dff 不难注意到这是逆序的jpg文件头尾,reverse之后cyberchef魔术棒转化为jpg,导出image-20250401142413130

修改图片高度可看到错位的flag,注意到图片每行错开,尝试修改图片宽度,几经尝试宽度630即可对正或者直接放ps里手动修一下

ecc

我是废物,ai写的代码

from sage.all import *

# 已知参数
p = 93202687891394085633786409619308940289806301885603002539703165565954917915237
a = 93822086754590882682502837744000915992590989006575416134628106376590825652793
b = 80546187587527518012258369984400999843218609481640396827119274116524742672463
k = 58946963503925758614502522844777257459612909354227999110879446485128547020161

# 定义椭圆曲线
E = EllipticCurve(GF(p), [a, b])

# 解析c1和c2的坐标
c1 = E(40485287784577105052142632380297282223290388901294496494726004092953216846111, 
        81688798450940847410572480357702533480504451191937977779652402489509511335169)
c2 = E(51588540344302003527882762117190244240363885481651104291377049503085003152858, 
        77333747801859674540077067783932976850711668089918703995609977466893496793359)

# 计算m点
temp = k * c2
m = c1 - temp
m_x, m_y = m.xy()

# 调试输出椭圆曲线计算结果
print("temp =", temp)
print("m =", m)
print("m_x =", m_x, "| m_y =", m_y)

# 已知的cipher值
cipher_left = 34210996654599605871773958201517275601830496965429751344560373676881990711573
cipher_right = 62166121351090454316858010748966403510891793374784456622783974987056684617905

# 计算模逆元(关键修正)
inv_m_x = inverse_mod(int(m_x), p)
inv_m_y = inverse_mod(int(m_y), p)

# 正确解密公式
flag_left_num = (cipher_left * inv_m_x) % p
flag_right_num = (cipher_right * inv_m_y) % p

# 显式转换为Python的int类型(关键步骤)
flag_left_num = int(flag_left_num)
flag_right_num = int(flag_right_num)

# 转换为bytes并拼接
flag_left = int.to_bytes(
    flag_left_num, 
    (flag_left_num.bit_length() + 7) // 8, 
    'big'
)
flag_right = int.to_bytes(
    flag_right_num, 
    (flag_right_num.bit_length() + 7) // 8, 
    'big'
)

flag = (flag_left + flag_right).decode()
print("flag =", flag)

舔狗的觉醒

字典爆破出密码88888888,观察文本文档,发现每个字节颠倒的50 4b 03 03以及尾部的50 4b 05 06.猜测每个字节的两位十六进制数都反转了.由于我是废物,所以ai写的脚本

def swap_hex_chars(hex_string):
    # Remove spaces and newlines from the hex string
    hex_string = hex_string.replace(" ", "").replace("\n", "")
    
    # Ensure the length of hex string is even
    if len(hex_string) % 2 != 0:
        raise ValueError("The length of the hex string must be even.")
    
    # Swap each pair of hex characters
    swapped_hex_list = []
    for i in range(0, len(hex_string), 2):
        byte = hex_string[i:i+2]
        swapped_byte = byte[1] + byte[0]
        swapped_hex_list.append(swapped_byte)
    
    # Join the list into a single string with spaces
    swapped_hex_string = ' '.join(swapped_hex_list)
    return swapped_hex_string

def read_and_swap_file(input_file_path, output_file_path):
    try:
        with open(input_file_path, 'r') as infile, open(output_file_path, 'w') as outfile:
            for line_number, line in enumerate(infile, start=1):
                cleaned_line = line.strip().replace(" ", "")
                
                # Check if the length of cleaned line is even
                if len(cleaned_line) % 2 != 0:
                    raise ValueError(f"The length of the cleaned hex string on line {line_number} must be even.")
                
                swapped_line = swap_hex_chars(line)
                outfile.write(swapped_line + '\n')
                print(f"Line {line_number}: Original: {line.strip()} -> Swapped: {swapped_line}")

    except FileNotFoundError:
        print(f"Error: The file {input_file_path} was not found.")
    except ValueError as ve:
        print(f"ValueError: {ve}")
    except Exception as e:
        print(f"An unexpected error occurred: {e}")

# Example usage
if __name__ == "__main__":
    input_file_path = "input.txt"
    output_file_path = "output.txt"
    read_and_swap_file(input_file_path, output_file_path)

输出文件改后缀为zip解压使用pdf编辑器移走图片即可.

cimbar

经查询得到编码表,为方便记录,记16进制数在边上7353027ab2f1b02693d145dcaa31d84212014233

对照给出的图记录

5359437b416e30746833725f416d407a316e395f51525f436f34657d

cyberchef FromHex一下就得到flag

nc

我是 fw,代码ai写的

import hashlib
import itertools
import string

# 已知部分
proof_suffix = " "  # 替换为实际的 proof[4:] 部分
_hexdigest = " "  # 替换为实际的 _hexdigest

# 字符集
charset = string.ascii_letters + string.digits

# 生成所有可能的4字符组合
for xxxx in itertools.product(charset, repeat=4):
    xxxx_str = ''.join(xxxx)
    # 拼接并计算哈希值
    test_str = xxxx_str + proof_suffix
    test_hash = hashlib.sha256(test_str.encode()).hexdigest()
    
    # 验证哈希值
    if test_hash == _hexdigest:
        print(f"Found match: {xxxx_str}")
        break
        
else:
     print("No match found")

给出答案后依次输入1,2,3......得到flag的每一位

Secret of Starven

导出smbimage-20250401164520256

然后被图片耽误了很久

字典爆破压缩包即可.

100%的⚪

进入游戏之后对着源代码盯帧,发现image-20250401165152395

拿去b64解一下就有了

X0R

我是fw,代码ai写的

from Crypto.Util.number import long_to_bytes
from pwn import xor

# 已知参数
e2 = 10706859949950921239354880312196039515724907
f1 = 4585958212176920650644941909171976689111990
f2 = 3062959364761961602614252587049328627114908

# 计算enc
enc = e2 ^ f1 ^ f2
flag_xor_key = long_to_bytes(enc)

# 假设flag以 "XOR{" 开头(常见CTF flag格式)
possible_prefix = b'SYC{'
key_candidate = bytes([possible_prefix[i] ^ flag_xor_key[i] for i in range(4)])

# 使用候选key解密
flag_candidate = xor(flag_xor_key, key_candidate)
print("Decrypted flag:", flag_candidate)

010查看压缩包末尾有附加字符串,b64解码为压缩包密码.根据图片名称提示想到这是盲水印,提取image-20250401172805847

根据txt名字及题目名字提示,文本是snow隐写,密钥是盲水印内容,image-20250401173018432

史上最没节操的游戏

碰到啥就上网搜就行,给的提示就是长宽拉伸一下得到bv号下载原音频对齐一下波形,相位反转一下用sstv扫屏幕截图 2025-03-10 173348

然后去雪剑博客.发现每次进入头图和文字都不同,跟图图片内"运气好的小朋友能找到",于是疯狂刷新

屏幕截图 2025-03-07 161158

或者疯狂盯帧源码屏幕截图 2025-03-10 200406

另外一段名字改变那里,多换几次名字观察发现是维吉尼亚,或者发动惊人的注意力发现每四位的字母偏移量重复,在结合网盘密码不区分大小写的特点发现字母位移量代表字母表的那一位字母.

然后翻雪剑qq空间第一条右下角.

歌单那里就是每首歌第一个字母.

友谊地久天长

不难发现附件有一个.crypto文件和一个损坏的图片.010以文本形式打开邮件,发现传输的是一个名叫44F2E635@A840FA51.57E5BE6700000000.png的图片.我们把图片的内容复制下来(复制到下一个类似------=_NextPart_67BEE557_17FF9180_31CF37E4的标识符那里)用b64解码后保存为png.

发现无法打开.010查看文件头发现异常,特征码应该是%PNG,但是现在第一个字节错误,纠正为89.运行模板后发现中间的chunk很奇怪,没有名字image-20250401183306220

仔细查看发现IDAT都变成了AT

image-20250401183449434

也就是49444145的前两个字节被置空了.将所有idat块修复,扫码得到的就是.crypto的密码.

.crypto是由软件 Encrypto 加密后的后缀名,我们下载此软件,使用其解码那个文件得到 mp3.邮件里说flag不在歌里,考虑提取歌曲的封面.binwalk发现有一个png文件,考虑是封面image-20250401192810085

在010搜索%PNG和IEND以定位图片头尾,手动导出.

使用stegsolve发现蓝色通道最低位出现神秘内容image-20250401193345173

导出,结合提示可知这是光栅,使用Photoshop操作image-20250401193651805

posted @ 2025-04-02 15:59  DeXterTKurumi  阅读(127)  评论(0)    收藏  举报