corCTF 2023 Writeup

この大会は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 

&#128681;: @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}