この大会は2023/7/29 9:00(JST)~2023/7/31 9:00(JST)に開催されました。
今回もチームで参戦。結果は123点で592チーム中219位でした。
自分で解けた問題をWriteupとして書いておきます。
saaaaaaaaaaaaaaaaaaaanity-check (misc)
問題の画像にフラグが書いてある。
corctf{aaaaaaaaaaaaaaaaaaaaaaaa}
fizzbuzz100 (crypto)
RSA暗号で、フラグが暗号化されている。フラグやある条件を満たす場合は復号できないが、復号するシステムも実装されている。ctを適当な数値の積に分解して復号できれば、その積がフラグになる。
$ nc be.ax 31100 n = 157339356257957132511468309820951114485519550451782104502468061416573716110704880248564732843363619487617517213495650921246990998946408442184994800167958947243589527060584643416023469146214497083868895564156223649915597285108317220872458122140513926157519637550620784342803632290862894431355787367922978853291 e = 65537 ct = 107095100191370649088567526127220769284673434752062261759788281587928100188265276585789460516976390308402183318207458551541143631676351605685449287322865916027802336489818865035275205533507663650020424397505813708224698953794731275203191603003352888157296628788847838963021728281597827265819977806482458746618 > 2 45499126437701836831599605736359896887429600696506984104152727022409758101344934983014568041383419159421839567966826636417150686213688746398812209717105554913532647501858706729648609220565616643102026106043363656240244371693358245282756943494124330882646083366625142503386295686933384010769746861167781657298 > 53547550095685324544283763063610384642336717376031130879894140793964050094132638292894730258488195154201091659103729275770571815838175802842724643661432958013901168244909432517637602766753831825010212198752906854112349476897365637601595801501676444078648314394423919481510864140798913632909988903241229373309 Buzz > 3 114837193051096566131486118415726680307567072560226752884962695205718101039581251238015735861335860870945812449603196346155789341313386234977542418682483025880739327918204006747244956613128396221498883041835689220341422601317052696676613983525430690651751096108512409601729732494589954935588841746412107683673 > 17849183365228441514761254354536794880778905792010376959964713597988016698044212764298243419496065051400363886367909758590190605279391934280908214553810986004633722748303144172545867588917943941670070732917635618037449825632455212533865267167225481359549438131474639827170288046932971210969996301080409791103 123153692010488424775850159702577052982424372547614057149436616728140535191776142860549085363492036596018825808542185997537951863689380299153218260256625447296003363548860311747695721554570715210519637852148424311724877189486354163280244928144804592473280731759158107713982145433041278705501021493560201660309
>>> ct = 107095100191370649088567526127220769284673434752062261759788281587928100188265276585789460516976390308402183318207458551541143631676351605685449287322865916027802336489818865035275205533507663650020424397505813708224698953794731275203191603003352888157296628788847838963021728281597827265819977806482458746618 >>> ct//2 53547550095685324544283763063610384642336717376031130879894140793964050094132638292894730258488195154201091659103729275770571815838175802842724643661432958013901168244909432517637602766753831825010212198752906854112349476897365637601595801501676444078648314394423919481510864140798913632909988903241229373309 >>> ct//2//3 17849183365228441514761254354536794880778905792010376959964713597988016698044212764298243419496065051400363886367909758590190605279391934280908214553810986004633722748303144172545867588917943941670070732917635618037449825632455212533865267167225481359549438131474639827170288046932971210969996301080409791103
以上を元に復号する。
#!/usr/bin/env python3 from Crypto.Util.number import * n = 157339356257957132511468309820951114485519550451782104502468061416573716110704880248564732843363619487617517213495650921246990998946408442184994800167958947243589527060584643416023469146214497083868895564156223649915597285108317220872458122140513926157519637550620784342803632290862894431355787367922978853291 e = 65537 ct = 107095100191370649088567526127220769284673434752062261759788281587928100188265276585789460516976390308402183318207458551541143631676351605685449287322865916027802336489818865035275205533507663650020424397505813708224698953794731275203191603003352888157296628788847838963021728281597827265819977806482458746618 pt0 = 45499126437701836831599605736359896887429600696506984104152727022409758101344934983014568041383419159421839567966826636417150686213688746398812209717105554913532647501858706729648609220565616643102026106043363656240244371693358245282756943494124330882646083366625142503386295686933384010769746861167781657298 pt1 = 114837193051096566131486118415726680307567072560226752884962695205718101039581251238015735861335860870945812449603196346155789341313386234977542418682483025880739327918204006747244956613128396221498883041835689220341422601317052696676613983525430690651751096108512409601729732494589954935588841746412107683673 pt2 = 123153692010488424775850159702577052982424372547614057149436616728140535191776142860549085363492036596018825808542185997537951863689380299153218260256625447296003363548860311747695721554570715210519637852148424311724877189486354163280244928144804592473280731759158107713982145433041278705501021493560201660309 m = (pt0 * pt1 * pt2) % n flag = long_to_bytes(m) print(flag)
復号結果は以下の通り。
b'\xeanA\xdfy\x04[\xdf\xb9\xb3\x8b8+\x91 corctf{h4ng_0n_th15_1s_3v3n_34s13r_th4n_4n_LSB_0r4cl3...4nyw4y_1snt_f1zzbuzz_s0_fun}\x9aB\xbeO\xe3\xa6\x89\xd7U\x00\xe5\x16r\x14%\x96'
corctf{h4ng_0n_th15_1s_3v3n_34s13r_th4n_4n_LSB_0r4cl3...4nyw4y_1snt_f1zzbuzz_s0_fun}
survey (misc)
アンケートに答えたら、以下のように書いてあった。
Decode the base85 text to receive the 🚩: @rHBtFCol@AS#4oDfoE)AU&<(H"CE)I/ You can use something like https://gchq.github.io/CyberChef to decode it. Thanks for playing corCTF 2023!
CyberChefでBase85デコードする。
corctf{see_you_next_year}