cyi WRITEUP
个人信息
个人名称:cyi
个人排名:112
解题情况
解题过程
misc Infinity(fail)
操作内容:
Png后藏zip,提出来
随便解压几个发现是无限,解压缩有7z,zip,tar格式,gpt整个jio本
得到最后的secret文件,内容是Inf1nityIsS0CoOL,结合BASE58-Ripple、SM4-ECB提示
赛中:卡在解密了,我想着是文件名base58,然后密文再sm4解一下,死活解不出来,不知道漏了那个,文件名反着来也试过了
赛后:gg
https://products.groupdocs.app/zh/scanner/scan-datamatrix
如该题使用自己编写的脚本代码请详细写出,不允许截图
import os |
flag值:
flag{a72dd260-f64d-4116-ab50-b26b40d69883}
misc EzMisc(fail)
操作内容:
ftp流量,一个enc,一个flag.7z,一个秘钥证书,然后就没有然后了,解密失败
misc 音频的秘密
操作内容:
提示:deepsound弱密码(无敌了,找半天key没找到)
密码123
flag.zip,爆破无果,发现加密算法zipcrypto store,且是png,字节充足,用明文攻击
得到的png图片,zsteg
flag值:
flag{Y1_Shun_jian_Fa_ZE_Dian_Fu}
我哪会密码,我只会打原题和gpt-_-
crypto funny_rsa
操作内容:
Gpt秒了,fake flag字符串都出来了,怎么可能是fake
中间那串long_to_bytes就行
如该题使用自己编写的脚本代码请详细写出,不允许截图
import random import math from Crypto.Util.number import bytes_to_long, long_to_bytes # 假设我们已经得到了 funny1, funny2, funny3, funny4 funny1 = -17696257697673533517695215344482784803953262308315416688683426036407670627060768442028628137969719289734388098357659521255966031131390425549974547376165392147394271974280020234101031837837842620775164967619688351222631803585213762205793801828461058523503457022704948803795360591719481537859524689187847958423587638744086265395438163720708785636319741908901866136858161996560525252461619641697255819255661269266471689541673348377717503957328827459396677344554172542244540931545166846117626585580964318010181586516365891413041095399344533013057011854734701706641516027767197631044458866554524544179750101814734153116374 funny2 = 23686728880494758233026798487859622755203105120130180108222733038275788082047755828771429849079142070779731875136837978862880500205129022165600511611807590195341629179443057553694284913974985006590617143873019530710952420242412437467917519539591683898715990297750494900923245055632544763410401540518654522017115269508183482044872091052235608170710105631742176900306097734799793264202179181242015892763311753674799273300604804820015447161950996038795518844564861004398396796284113803759208011 funny3 = 419166458284161364374927086939132546372091965414091344286510440034452974193054721041229068769658972346759176374539266235862042787888391905466876330331208651698002159575012622762558316612596034044109738533275009086940744966244759977014078484433213617582101347769476703012517531619023366639507114909172774156647998737369356116119513795863130218094614475699956104117183821832339358478426978211282822163928764161915824622224165694904342224081321345691796882691318330781141960650263488927837990954860719950761728580780956673732592771855694502630374907978111094148614378212006604233062606116168868545120407836000858982789824582335703891535021579560434875457656655941164757860852341484554015214879991896412137447010444797452119431147303295803678311972500421396900616845556636124424993090559354406417222700637726789045926994792374756038517484548544506630672251868349748176389591615802039026216656891403871728516658502023897343287181822303758976641229952646993446276281728919020747050486979968215989594984778920359425264076558022228448529089047021814759587052098774273578311709416672952218680244714492318709603579024 funny4 = 13541898381047120826573743874105965191304100799517820464813250201030319771155430755606644860103469823030581858410957600027665504533335597988508084284252510961847999525811558651340906333101248760970154440885012717108131962658921396549020943832983712611749095468180648011521808106480590665594160479324931351996812185581193608244652792936715504284312172734662364676167010674359243219959129435127950232321130725013160026977752389409620674167037650367196748592335698164875097139931376389630867192761783936757260359606379088577977154378217235326249540098268616890307702288393952949444753648206049856544634755301197410481479 # 推导 n n = (funny3 + 1025) // funny2 # 恢复 p + q # 由于 random.randint(-1025, +1025) 是一个小范围的随机数,我们可以尝试多次 for delta in range(-1025, 1026): p_plus_q = funny1 + n - delta # 解二次方程 x^2 - (p + q) * x + n = 0 discriminant = p_plus_q**2 - 4 * n if discriminant < 0: continue sqrt_discriminant = math.isqrt(discriminant) # 使用 math.isqrt 计算整数平方根 p = (p_plus_q + sqrt_discriminant) // 2 q = (p_plus_q - sqrt_discriminant) // 2 if p * q == n: break # 计算 phi(n) phi_n = (p - 1) * (q - 1) # 计算私钥 d d = pow(65537, -1, phi_n) # 使用 pow 计算模逆 # 解密 hint hint = pow(funny4, d, n) hint = long_to_bytes(hint) print(hint) # 恢复 m m_times_hint = funny2 m_times_n_times_hint = funny3 + 1025 m_times_n = m_times_n_times_hint // bytes_to_long(hint) m = m_times_n // n m = long_to_bytes(m) print("Decrypted message:", m.decode()) print(long_to_bytes(5044833682931814367881036090727702841234957943094051805420875375031047763007750978962055801191968383860156687597666360268370292861)) |
flag值:
flag{aB3-CdE7_FgH9-iJkLmNoPqRsT-UvWxYz1234567890}
crypto signtime
操作内容:
屯flag差点翻车
好像只能打The time is 1:1
如该题使用自己编写的脚本代码请详细写出,不允许截图
import socket |
flag值:
flag{54dec758-c8a9-4513-8a42-4dd5f0a586c1}
pwn riya
操作内容:
(不会pwn)本身是瞎打出来的,看到ida几个数字就开打了
输入n时会进label10,里面直接sh执行文件了
flag值:
flag{b654b328-9443-457d-b960-b3b1b7e97f99}
web easy_php
操作内容:
点一下,源码到手
本身看题目想打phar 的,结果发现这么多人秒出,感觉不对劲
File.php是读文件的
本身../../../flag,会ban,写hacker
flag值:
flag{a16dcb7549915546893a27a6d7927615}