📚

PicoCTF 2022 Write-up

2022/05/04に公開

こんにちは初めまして。お久しぶりです。ny_aです。ブログ放置してすいません。Writeup放置してすいません。全てを放置してすいません。。。

PicoCTF 2022 に参加していました。(CTF TIME)

PicoCTFは始めての参加です。PicoCTFは、というよりも、CTFに参加し始めたのが去年のセキュリティ・キャンプがきっかけだったため、ほとんど全てのCTFに参加したことがありません。CTF歴1年の初心者なのでお手柔らかにお願いいたします。嘘はついてません。嘘じゃないもん!!!!!!!!!!

始めは参加する気はほぼなく、そもそもいつあるのかも知らなかったのですが、Bigdrea6さんに誘われたので 仕方なく 参加することにしました。
CTFへの気持ちが少なかったこともあってあまり時間を使わず、個人的には若干微妙な結果になってしまったのが心残りといえば心残りですが、まあ他でバタバタしていたので仕方ないかなと思っています。ごめんなさい。次何か誘われたときはもっと全力を出せるようにしておきたいですね。
もうこいつとは組まんと思われていなければ幸いです。(次断わるかもしれませんが、それはメンバーが嫌とかではないので!!!!!!!!)
Webはね、全部解きたかったかなー。

私はWebが割と得意で、Cryptoもまあ調べながらでよければ解けるかな〜という感じでした。私の個人スコアとしては

  • Cryptography: 11/15
  • Reverse Engineering: 0/12
  • Binary Exploitation: 1/14
  • Web Exploitation: 9/12
  • Forensics: 4/13

の合計4500ptsという感じでした。2ヶ月も経っているので記憶が曖昧ですが……。Writeup書きながら進めるといいかもしれませんね。知ってた。スクリーンショットは撮ってたもん!!!!!!!!

あとGuessが苦手です。というか、Guessが不要かな?と思っているときにはほぼ全くGuessをしない傾向にある、というのが正しいかもしれません。自分の気付いていなかった弱みを知ることができたのでチームメンバーには感謝しています。

チーム sokuseki

チームメンバーと分からないところを相互に補い合うことができたため、かなりよいチームだったのではないかなと思いました。

え、チーム名ですか?sokusekiですね。案が出たときには本当に他意がなかったのですが、解き始めると煽りにしか見えなくなってしまいました。いや本当に煽りではありません。

メンバーの Write-up

https://bigdrea6.hatenablog.com/entry/2022/04/06/063101

Web

9問解きました。いや、3問解けませんでした。

Web: Inspect HTML

Inspect HTML challenge

Inspect なので、ページの任意の箇所を右クリックしてコンテキストメニューの "Inspect" を選んで (いやまあそんなことはせずに Ctrl+Shift+I しますが)、DevTools の Elements タブを見ればよいのでしょう。

Inspect HTML solution

flag が書いてある HTML comment が body 直下にあって親切ですね。

Web: Includes

Includes

Includes ということは、読み込んでいる外部リソースに flag が書いている気がしますね。

Includes solution 1
Includes solution 2

まあ普通に js と css のコメントに flag が書いてありました。簡単ですね。

Web: Local Authority

Local Authority challenge

Local Authority ということは、多分認証をフロントエンドで行っているのでしょう。

Local Authority solution 1
Local Authority solution 2

return true、初心者にも分かりやすいコードですね。レビューでは指摘しがち。
普通に username と password が分かったので、ログインしてみます。

Local Authority solution 3

flag が画面に表示されました。

Web: Search Source

Search Source challenge

Search ですね、オッケーです。Search してみましょう。

Serach Source solution

Search するだけです。

Web: Forbidden Paths

Forbidden Paths challenge

Forbidden Paths、Directory Traversal な気がします。

Forbidden Paths solution 1
Forbidden Paths solution 2
Forbidden Paths solution 3

カレントディレクトリと flag のファイル名が分かっているので簡単ですね。Guess 要素がないのは嬉しいです。

Power Cookie challenge

Cookie を書き換えることで権限の昇格が可能な気がします。

Power Cookie solution 1
Power Cookie solution 2
Power Cookie solution 3
Power Cookie solution 4

画面に flag が表示されます。

Web: Roboto sans (解けず)

Roboto sans challenge

Roboto sans はよく見るフォントファミリーの名前ですね。HTML か CSS に flag が書いてあることが予想されます。
評価がかなり低いのが気になりますが……。

はい、お察しの通り解けませんでした。
あとはチームメンバーに「これフォントの何かだと思うんですが解けませんでした……」と共有して、
Bigdrea6さんに解いてもらう だけの簡単なお仕事です。先日助けていただいた猫です。その節はどうもありがとうございました。Web 問なのにすいません……。(Guess とか聞いてないよ!!!)

Web: Secrets

Secrets challenge

昔懐かしのゴール探しゲームみたいなやつですかね。Guess スイッチを入れて楽しんでいきましょう。

Secrets solution

Home ページは何もなさそうです。

Secrets solution

Contact ページに怪しいパスの CSS が見えます。

Secrets solution

CSS ファイル自体は特に違和感ありません。

Secrets solution

そのディレクトリは 403 のようです。

Secrets solution

その上は index ページがあるようです。ほぼ答えと書いてあります。

Secrets solution

HTML ソースを見ると、怪しい CSS を読み込んでいます。

Secrets solution

CSS は空のようです。

Secrets solution

そのディレクトリは index ページがあります。

Secrets solution

ソースを見るとやはり CSS があります。

Secrets solution

CSS は違和感ありません。

Secrets solution

そのディレクトリには index ページがあり、

Secrets solution

flag が隠れていました。

Web: SQL Direct

SQL Direct challenge

普通に PostgreSQL サーバーに接続して中身を見るとよさそうです。パスワードはデフォルトの postgres だったような。と思ったら接続後に表示されていたようですね。

$ psql -h saturn.picoctf.net -p 60479 -U postgres pico
Password for user postgres:

pico=# \d
 public | flags | table | postgres
pico=# select * from flags;
  1 | Luke | Skywalker | picoCTF{L3arN_S0m3_5qL_t0d4Y_73b0678f}
  2 | Leia | Organa    | Alderaan
  3 | Han  | Solo      | Corellia

Web: SQLiLite

SQLiLite challenge

SQLite での SQL Injection ですね。

SQLiLite solution

username, password 共に a' or 1 = 1 -- とすると、flag が隠れた状態で表示されます。
(roboto は気にしないでください。)

Crypto

11問解きました。

Crypto: basic-mod1

basic-mod1 challenge and solution

JS で愚直に実装して終わり。

Crypto: basic-mod2

basic-mod2 challenge and solution

JS で愚直に実装して終わり。

Crypto: credstuff (手伝ってもらった)

credstuff challenge

$ grep cultiris -n leak/usernames.txt
378:cultiris
$ cat leak/passwords.txt | tail -n+378 | head -n1
cvpbPGS{P7e1S_54I35_71Z3}

credstuffもちょっと低い
L378の
cvpbPGS{P7e1S_54I35_71Z3} をdecryptせよとのこと。わからん。

評価が低いことに気を取られていました。Decryptという単語から方式を Guess する必要を感じたのですが気持ちが足りず、メンバーにヘルプを求めました。

(換字暗号かなと思ってヒント少ないな〜となっていました)

Bigdrea6先生がシーザー暗号っぽい とのこと。なんだただの ROT13 か。失礼しました。

違うところにsubmitしちゃった 😢

すいませんでした。

Crypto: morse-code

morse-code challenge with flag

モールス信号ですね。

morse-code solution

Audacity で波形表示して、適当なツールに入力して、あとは問題文の通りに提出するだけ。

Crypto: rail-fence

rail-fence challenge

Rail Fence Cipher というやつがあるらしい。初めて知りました。

rail-fence solution

みんな大好き dcode.fr。

Crypto: substitution0

substitution0 challenge
substitution0 solution

気持ちが少ないので適当なツールで一発。こういうのは次の慢心に繋がります。

Crypto: substitution1 (解けず)

substitution1 challenge
substitution1 solution

95%くらい解けていたのですが、incorrect だったのでメンバーにヘルプを依頼。

substitution1、謎に評価が低い

$ cat substitution1/message.txt
WYHg (gzray hra wimybas yzs hvij) ias i yums rh wrombysa gswbakyu wromsykykrl. Wrlysgyilyg ias masgslysn dkyz i gsy rh wzivvsljsg dzkwz ysgy yzska wasiykxkyu, yswzlkwiv (iln jrrjvklj) gckvvg, iln marqvso-grvxklj iqkvkyu. Wzivvsljsg bgbivvu wrxsa i lboqsa rh wiysjraksg, iln dzsl grvxsn, siwz uksvng i gyaklj (wivvsn i hvij) dzkwz kg gbqokyysn yr il rlvkls gwraklj gsaxkws. WYHg ias i jasiy diu yr vsial i dkns iaaiu rh wrombysa gswbakyu gckvvg kl i gihs, vsjiv slxkarlosly, iln ias zrgysn iln mviusn qu oilu gswbakyu jarbmg iarbln yzs dravn hra hbl iln maiwykws. Hra yzkg marqvso, yzs hvij kg: mkwrWYH{HA3FB3LWU_4774WC5_4A3_W001_7II384QW}
$ cat substitution1/message.txt | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 'RUKWXJSFAGINPDMQBOEZYLCVTHrukwxjsfaginpdmqboezylcvth'
CTFs (short for capture the flag) are a type of computer security competition. Contestants are presented with a set of challenges which test their creativity, technical (and googling) skills, and problem-solving ability. Challenges usually cover a number of categories, and when solved, each yields a string (called a flag) which is submitted to an online scoring service. CTFs are a great way to learn a wide array of computer security skills in a safe, legal environment, and are hosted and played by many security groups around the world for fun and practice. For this problem, the flag is: picoCTF{FR3JU3NCY_4774CK5_4R3_C001_7AA384BC}

これsubmitしてincorrectでした。分からん

ツール使うのはいいけどちゃんと自分の目でチェックしましょう。1文字 Guess すればよかったっぽい。
Bigdrea6大先生 マジでありがとう。

Crypto: substitution2

substitution2 challenge
substitution2 solution

みんな大好き dcode.fr。

Crypto: transposition trial

問題のスクリーンショット忘れていそう。

$ cat message.txt | fold -w3 | sed -r 's/(.)(.)(.)/\3\1\2/g' | tr -d '\n'
The flag is picoCTF{7R4N5P051N6_15_3XP3N51V3_109AB02E}

Crypto: Vigenere

Vigenere challenge
Vigenere solution

みんな大好き dcode.fr。

Crypto: diffie-hellman

diffie-hellman challenge

よく分かりませんが調べながら解いてみます。

diffie-hellman solution

鍵は 5 っぽい。

diffie-hellman solution

dcode.fr のやつだと数字をシフトしてくれないので incorrect。

diffie-hellman challenge with flag

https://planetcalc.com/8572/ で解けました。

Crypto: Sum-O-Primes

スクリーンショット忘れていそう。

Bigdrea6さんが詰まっていたの をヘルプ。

sqrt_mは皆さんの手元にも入っているであろうbcで

$ bc -l
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
sqrt(141724381556467698146336254247338671478193846354806595373668752627372519220056109598384406967738373805169384186656448734272181086438931405685558172646365991015101399639824404284305509826427572872937497862661767717122360878233332422225321316995942273648956612487066395060395701103597865069588425311955221817548 * 141724381556467698146336254247338671478193846354806595373668752627372519220056109598384406967738373805169384186656448734272181086438931405685558172646365991015101399639824404284305509826427572872937497862661767717122360878233332422225321316995942273648956612487066395060395701103597865069588425311955221817548 - 19594979821655183104856721200876279688744199212596318791410700925214020940999368124753876379046101491755637328180352524777390418669210709696131801135729820817964419360433309338628094186567119917735965630612618443318361476838501333469511238156792898753876667912964148133223421606462036819614830830346046983259407147596111671725522875516790826213635619398696281968888325882416381776971733880221909903860599888903194248107358128483103962534467323374352040906477803568664482713174891860915973023918444553550090873773281086421418960484839799410173913761912529789181262819973734812402783319741028408456027454148088452256679)
22154469208447724337645605498105541244045940508206582138619491297742\
54870852834807343855935077305984363067064731665137322770740430174243\
79961217733707433921912937159426366362075124435588491728071440983640\
52302896334658043475260234764933068154832506032305953302163703204903\
611040380967815654013878302033608275.00000000000000000000

pとqは

>>> m - sqrt_m

119569912348019973808690648749233130234147905846600013235049261329629970511527761524945847616965313961538713539339797361044473682137188967689436399275622598823807683697187768076793066267578400065793399498609464820787702834758072187460388248841109767616650659184902691855492090063216897253934411433653188209273

m + sqrt_m
163878850764915422483981859745444212722239786863013177512288243925115067928584457671822966318511433648800054833973100107499888490740673843681679946017109383206395115582461040491817953385276745680081596226714070613457018921708592656990254385150774779681262565789230098265299312143978832885242439190257255425823

です
>>> m = 0x193a4f9d511dfa628e25a42de2e16123a4503c2ba1983dab3402b0f84d2b145116c3d45c4ece5c2ef62e425df830c9cf9b324edd729fdf75f8cb89cfad0d217cc83890c37e1caa39c41588deb59b0aae82291ee407dcb51c80be787ad7f61802c6811830faf12be64a8764e95471c645c5dddc686d7068126f5777c731b125198 // 2
>>> m
141724381556467698146336254247338671478193846354806595373668752627372519220056109598384406967738373805169384186656448734272181086438931405685558172646365991015101399639824404284305509826427572872937497862661767717122360878233332422225321316995942273648956612487066395060395701103597865069588425311955221817548
>>> sqrt_m = 22154469208447724337645605498105541244045940508206582138619491297742548708528348073438559350773059843630670647316651373227707404301742437996121773370743392191293715942636636207512443558849172807144098364052302896334658043475260234764933068154832506032305953302163703204903611040380967815654013878302033608275
>>> 0x9b38de276b7e997c07bca5117230f669642491b540741badeb3cb8f096f3820149b31154bd674f3e3d7df12c96896bebfb0245d330309af05fc58d3fcfb06523c680334ef7eb9fb1bf2934ebac715b56326de577a2a45b953b6f6e22387be9fc89908a43a65a9133db084c39b18096338cd574614d4bcb5f03827a86f161370aaebdcdc1736289c4f59ab28e9eed74161c3cd9ff7de7c8c2d2845e0c9ebce843a88a3a93a7450bd4b9ab9a123569602f707489f18c3efc63f305de4d2942414c8c76d6ca18b4a8f38227c9b786857612e6fb45daee4db30a94b4cb9328e068fcabd40c0b705b944209e6c866505b1e06cb461da0858eaf7b26a043822c2a93a7 == (m - sqrt_m) * (m + sqrt_m)
True

それの積がnと一致しているのでokということですね
7069636f4354467b32343932396334357d
picoCTF{24929c45}

という感じ。正直あんまり覚えてないです。

Crypto: Very Smooth (解けず)

https://bigdrea6.hatenablog.com/entry/2022/04/06/063101#Very-Smooth300pt

マジ感謝。

言い訳します!検索したら漢字いっぱいのサイト出てきたので他のを当たってました!翻訳使え!言い訳終了!

Crypto: Sequence (解けず)

漸化式を行列にする。

# |i  | = |21 301 -9549 55692|  |i-1|
# |i-1| = | 1   0     0     0|  |i-2|
# |i-2| = | 0   1     0     0|  |i-3|
# |i-3| = | 0   0     1     0|  |i-4|

あと Python で殴ったのですが、答えが微妙に違ってました。

私の答え:

32905795850984763140894133020736921489075984547553383820749951006085657584238293580531818314534441794258408363769683958014335858678927280224225587045835554549236411759910608220745411090061107428308955685273979287406544038776309083120692585385738829595466109925134108641705991448085508655504450017990509268760925633701568972881830027061610560435878782702300627297929494871966955716917939371706707268015616593308156496696604916581937050769400369329646318242403439293960972797326591961508734072823394003350315417131956614413828716990680272404638311428692240287388862893111312382911200690775170712470656181173871770843346165473902020842788371815280837350600345873274612288695974628974447382548367670699187634577856102734888566085413732796006178277409299011898018586005894168842976151756634127393139021619117795598661633051521271539523878676739785948001294884571789689490927900913683983739549130273396058399143226419007679327244720322508238328094638668628927305146465933124499123166025607367183896479143811606663266607998143104781472932536517962870064142946144625397409118482948529375842470080996308940228181555868856278635118907503183008759948969042642499296992802929823117992152968592210773980077617609073992433539666043450153737078290684650605359729295102951770694711461980246093793230726069510952832108390343839058578187834443332785573981574093142883050492227667587060213520259865514144542328249027296100425783797607012578290271918793953435463360127600336995858457256850614392061752272722254154308105713290184809674001961254146687993990619053173026936872310492713720330275500652722252195618029796316172978100805935132221268612041959579928042577530526820419119584535052685904447261275310418413248686956899719552564514439618702687638343849484513674694171734435213591420260740566479490794343621991808171166760491608939159807834320688115459926363623951639944589028697445192690646124728566256342389792435969804521066155975776703867010670866905226643086877863465230710100595718033849129799770334210438392357318197622026595775013560170000581836767441557468287425384470655606044094877141189131911510528837751403182546932730981726862216771989383509234877567054461236826949390614566495105022255382856931991575044242339913426032792306478049565359457186829132169808003222243325028652626310095161166749383960092203262812957052229181656830263059054012215047216588117847290728018790343673230003332953508551258024784915192282602155534492742678877926631791253048827739564711644506014349266360429184321481406973201467494658627340758651248713537093402837529826098026053980059834955577271342991416289835227752675490374970512450046682049106507080363044373334490863015296351867206843957520897668462624524697408794293584230426162185084180656752348354284781732407856125955024240750800619775537915436516642312543485650255028594050775824329726464411065155974834914382223375359322586073472902099799870968399129353093933551117138823131500391523207862454881095643216836059114056185567621210349969346322773001970523136569586467928553922556759816995780147911338014075002398099900406865475250060061466196595711092783115852233928711362221294428465110008730032376221811390098890201357718636406741505189198093628817125780661479980043085639258408363072938360753891009465462833335469632467626044690421375033291457334660505739506576025799178496006189196177956994530824690940218609585303782913911708447438142187182926981478894626795456902176806611295290700707265838620112296859471410916725995917774332274290788363516703126067525815657749686032894240952885372190041514195745517242466094437249645852862039820489243179115296739411857999937345382824004834661340869046052653646306780119433815387152755133605774561035882025757872567705036320478601722273548057596707229169819752947743173434922514692459604659989254924691025826519889997310022991556840695569039726702142704241050410911435207616994113021032464407922133128294008095361971182034734357545845729036366311342093217648851382217300855617348105944416959797800045679106051418970936740212201243323374420621407825691038198850295142424362386735016850455273108385213347814948477424622972677362919476397615254720546530031804494636576667039213835518167079053755689483780169794708659175854750079429248450088295652150342673865847877948007025066365086867044327664549023605585607043999489198176552411509573614509346696314655265681005379692562018978024392184039921374721689942446250899039972858579928731641819612416834076914289563149490277258128048991899111474196559739496407766224802408886023880978692457886403296980175876160991944550852846912763591834524913193729446086608083228520607915228071996267423308343063134888427907517509315007222472389958749971119851036755792600655325528041204067006759701899650882688051833189752046173730379687971618778106152429359138121583193895560513945636243134471509560159959342910138282307726776095970363559666437861045509504138185181506053793512330290527298473960426572845110238171117683684041364809195193134404789631117855182678689233515561942021072691997136439472830027014623367190862026964245957075271549021475940633067620735535147002394377565757136258368893655670057033255721591133344504950327269570084772598756931676545313429328183852664697498916280009082153424970243321291245567462087352044270433243592074410354599395985297648098973502854925696106939367723393764563272258573159869455233248604794095580403785375164969409403081664991958224758441901558161776076591761888047641751838451040113125346830296747468600274844343324792391841427920168269451466724402733360927693709608962574594464579536984204944785654570365966337092840214689194020777824352704334046313881288338804180775802282603846332149028417773288289252762349196418160264959236996771411726564554602445482384874934737046588338703536104981717946192703044019694658564450098648845491774640036585262302060685132707254404537015003307098121867501852580890489939024131889401235319636551040339975967238422740240966259515037478254770473708996730051186960847990806128716407679744434499599989634137262723021472296892338440434736145378291606947957568823870560743760517351104324171646786563571781160467327443314778456838020015351241446028925489659469259191936419394977586960658145019513424973791091137643248921605946312129559765684939065366382416571402819258368193526542981160896431303284342924396162774222454806500316599596574249681068946095848501619763049813933785364480427016321396723833776401301274077949645225141713635020427987198026380348105434595680144888649570836956452691173177645938260028423349017079649855941675840603611580622678506371371697560589581420055017577346354260361897276945627730859540343204410331899938007511401885662258331200755215828320367067692873598022854726551625019874259353828693391050015840864024895999795407357598143936695574892246307842161783795560397647511274081780556477771717482679637977149078124055360544607647924994542360536953444119017948371483912417341760402319880478433679698847402873629477418088386984882884367030602730629280761454042804309591833135472741106210177450590122900331916392690960166575957302364880258370864660313841070468917976423612480270717152957780709455158756388635972782046126933529379819689066556155764477143246285455968257184500627209798685519518396787028389456612015798784443980456558550117443763642092453428667889633895366126970127595278029054151815294466903598493508152766946482827975630302463357183665021121093456732176958408682571069411703078859156168396080558652545622296864811704928778418723691428995865934077090633785666707553168035257181052413086259223364488253377812633572773449366795144005798862081976863438611157642682042555702811274364249588365217230773276938197025251263204920250274561918739940317025820821943112146326658971603405997249518942370887739428430647434654176831358048833125278711592425215074394781203447864697270631159656012070957627193840233040056721098784067686855982514452154301379396013592845015085700333286408687000310352955163502073542407384258224528062051710025286474577927921058848236668349074255824260841594925768567573318340711331715155787289165246585583291819252627720144687822781808529370613377586610735928178283327207791931897883424633325083583001975227016830407188727609132036632946234419301131666389964830321414921172514131959586030586931111249491498106713817311838283034349524325163097453961907669495483388300826404610851466022463454212313603637565042757263073095191351465395578859789289286623320311957329723105215118350211185629815472005840341390060401666302409887985194198907321230384356718336469944222033952614808736700826052596589783073153308736029332962140644960168255815809288477363038352552111837655071019625450260503418732701804784747182324638570871601380717550522471539631880754137751840248666247067558719456661594013155374353565787812302603454241932587478074531723845881852522899875520108223989565161816290836725233062170653322013442338668982907977623671041502866086951618008336554936548381992485724315445742522418652645366236207797254801446299025033667397474972659524455906539862842231515555042136670038247248897838354864879530283890881209788864080366922898130228485869246412234498989357579422587192729993196385899640805525931849963321047376078696409505210382363852446788333692920589280728231042105259768204967935237630730947289546176237344157978687526209734663065396354369435887509555819496761529612670892267592613261368154786970843333205497696978891361396207152144495001501963211406214283549677114836227070689864106611003794440829922052585114742533372193737747468840053514452728905654108384095706621378519493931924415799771055333810098449370026530525687192051298576502186041804793590285571178492574358690394687483560097079894226196628064591511497281471180947997153327377330473027002482264767742036860570511304613104070588191520523721602975179515534689251675096747888297896189014738139384973413497771956407580089944032595700454254757322594723644055223823257936218414738084433738393480670154822354418285633492955295404766761380204585025501914177392046923017909349445763892709995098736896765635526774603125001

shiratakiさんの答え:

59255992309255409483179419845385604076174038906804435862147131271801573863364671050296589603656758794258408363769683958014335858678927280224225587045835554549236411759910608220745411090061107428308955685273979287406544038776309083120692585385738829595466109925134108641705991448085508655504450017990509268760925633701568972881830027061610560435878782702300627297929494871966955716917939371706707268015616593308156496696604916581937050769400369329646318242403439293960972797326591961508734072823394003350315417131956614413828716990680272404638311428692240287388862893111312382911200690775170712470656181173871770843346165473902020842788371815280837350600345873274612288695974628974447382548367670699187634577856102734888566085413732796006178277409299011898018586005894168842976151756634127393139021619117795598661633051521271539523878676739785948001294884571789689490927900913683983739549130273396058399143226419007679327244720322508238328094638668628927305146465933124499123166025607367183896479143811606663266607998143104781472932536517962870064142946144625397409118482948529375842470080996308940228181555868856278635118907503183008759948969042642499296992802929823117992152968592210773980077617609073992433539666043450153737078290684650605359729295102951770694711461980246093793230726069510952832108390343839058578187834443332785573981574093142883050492227667587060213520259865514144542328249027296100425783797607012578290271918793953435463360127600336995858457256850614392061752272722254154308105713290184809674001961254146687993990619053173026936872310492713720330275500652722252195618029796316172978100805935132221268612041959579928042577530526820419119584535052685904447261275310418413248686956899719552564514439618702687638343849484513674694171734435213591420260740566479490794343621991808171166760491608939159807834320688115459926363623951639944589028697445192690646124728566256342389792435969804521066155975776703867010670866905226643086877863465230710100595718033849129799770334210438392357318197622026595775013560170000581836767441557468287425384470655606044094877141189131911510528837751403182546932730981726862216771989383509234877567054461236826949390614566495105022255382856931991575044242339913426032792306478049565359457186829132169808003222243325028652626310095161166749383960092203262812957052229181656830263059054012215047216588117847290728018790343673230003332953508551258024784915192282602155534492742678877926631791253048827739564711644506014349266360429184321481406973201467494658627340758651248713537093402837529826098026053980059834955577271342991416289835227752675490374970512450046682049106507080363044373334490863015296351867206843957520897668462624524697408794293584230426162185084180656752348354284781732407856125955024240750800619775537915436516642312543485650255028594050775824329726464411065155974834914382223375359322586073472902099799870968399129353093933551117138823131500391523207862454881095643216836059114056185567621210349969346322773001970523136569586467928553922556759816995780147911338014075002398099900406865475250060061466196595711092783115852233928711362221294428465110008730032376221811390098890201357718636406741505189198093628817125780661479980043085639258408363072938360753891009465462833335469632467626044690421375033291457334660505739506576025799178496006189196177956994530824690940218609585303782913911708447438142187182926981478894626795456902176806611295290700707265838620112296859471410916725995917774332274290788363516703126067525815657749686032894240952885372190041514195745517242466094437249645852862039820489243179115296739411857999937345382824004834661340869046052653646306780119433815387152755133605774561035882025757872567705036320478601722273548057596707229169819752947743173434922514692459604659989254924691025826519889997310022991556840695569039726702142704241050410911435207616994113021032464407922133128294008095361971182034734357545845729036366311342093217648851382217300855617348105944416959797800045679106051418970936740212201243323374420621407825691038198850295142424362386735016850455273108385213347814948477424622972677362919476397615254720546530031804494636576667039213835518167079053755689483780169794708659175854750079429248450088295652150342673865847877948007025066365086867044327664549023605585607043999489198176552411509573614509346696314655265681005379692562018978024392184039921374721689942446250899039972858579928731641819612416834076914289563149490277258128048991899111474196559739496407766224802408886023880978692457886403296980175876160991944550852846912763591834524913193729446086608083228520607915228071996267423308343063134888427907517509315007222472389958749971119851036755792600655325528041204067006759701899650882688051833189752046173730379687971618778106152429359138121583193895560513945636243134471509560159959342910138282307726776095970363559666437861045509504138185181506053793512330290527298473960426572845110238171117683684041364809195193134404789631117855182678689233515561942021072691997136439472830027014623367190862026964245957075271549021475940633067620735535147002394377565757136258368893655670057033255721591133344504950327269570084772598756931676545313429328183852664697498916280009082153424970243321291245567462087352044270433243592074410354599395985297648098973502854925696106939367723393764563272258573159869455233248604794095580403785375164969409403081664991958224758441901558161776076591761888047641751838451040113125346830296747468600274844343324792391841427920168269451466724402733360927693709608962574594464579536984204944785654570365966337092840214689194020777824352704334046313881288338804180775802282603846332149028417773288289252762349196418160264959236996771411726564554602445482384874934737046588338703536104981717946192703044019694658564450098648845491774640036585262302060685132707254404537015003307098121867501852580890489939024131889401235319636551040339975967238422740240966259515037478254770473708996730051186960847990806128716407679744434499599989634137262723021472296892338440434736145378291606947957568823870560743760517351104324171646786563571781160467327443314778456838020015351241446028925489659469259191936419394977586960658145019513424973791091137643248921605946312129559765684939065366382416571402819258368193526542981160896431303284342924396162774222454806500316599596574249681068946095848501619763049813933785364480427016321396723833776401301274077949645225141713635020427987198026380348105434595680144888649570836956452691173177645938260028423349017079649855941675840603611580622678506371371697560589581420055017577346354260361897276945627730859540343204410331899938007511401885662258331200755215828320367067692873598022854726551625019874259353828693391050015840864024895999795407357598143936695574892246307842161783795560397647511274081780556477771717482679637977149078124055360544607647924994542360536953444119017948371483912417341760402319880478433679698847402873629477418088386984882884367030602730629280761454042804309591833135472741106210177450590122900331916392690960166575957302364880258370864660313841070468917976423612480270717152957780709455158756388635972782046126933529379819689066556155764477143246285455968257184500627209798685519518396787028389456612015798784443980456558550117443763642092453428667889633895366126970127595278029054151815294466903598493508152766946482827975630302463357183665021121093456732176958408682571069411703078859156168396080558652545622296864811704928778418723691428995865934077090633785666707553168035257181052413086259223364488253377812633572773449366795144005798862081976863438611157642682042555702811274364249588365217230773276938197025251263204920250274561918739940317025820821943112146326658971603405997249518942370887739428430647434654176831358048833125278711592425215074394781203447864697270631159656012070957627193840233040056721098784067686855982514452154301379396013592845015085700333286408687000310352955163502073542407384258224528062051710025286474577927921058848236668349074255824260841594925768567573318340711331715155787289165246585583291819252627720144687822781808529370613377586610735928178283327207791931897883424633325083583001975227016830407188727609132036632946234419301131666389964830321414921172514131959586030586931111249491498106713817311838283034349524325163097453961907669495483388300826404610851466022463454212313603637565042757263073095191351465395578859789289286623320311957329723105215118350211185629815472005840341390060401666302409887985194198907321230384356718336469944222033952614808736700826052596589783073153308736029332962140644960168255815809288477363038352552111837655071019625450260503418732701804784747182324638570871601380717550522471539631880754137751840248666247067558719456661594013155374353565787812302603454241932587478074531723845881852522899875520108223989565161816290836725233062170653322013442338668982907977623671041502866086951618008336554936548381992485724315445742522418652645366236207797254801446299025033667397474972659524455906539862842231515555042136670038247248897838354864879530283890881209788864080366922898130228485869246412234498989357579422587192729993196385899640805525931849963321047376078696409505210382363852446788333692920589280728231042105259768204967935237630730947289546176237344157978687526209734663065396354369435887509555819496761529612670892267592613261368154786970843333205497696978891361396207152144495001501963211406214283549677114836227070689864106611003794440829922052585114742533372193737747468840053514452728905654108384095706621378519493931924415799771055333810098449370026530525687192051298576502186041804793590285571178492574358690394687483560097079894226196628064591511497281471180947997153327377330473027002482264767742036860570511304613104070588191520523721602975179515534689251675096747888297896189014738139384973413497771956407580089944032595700454254757322594723644055223823257936218414738084433738393480670154822354418285633492955295404766761380204585025501914177392046923017909349445763892709995098736896765635526774603125001

先頭の 32905795850984763140894133020736921489075984547553383820749951006085657584238293580531818314534441 の部分が違ったっぽいですねー。90%くらい合ってたので許してください。無理ですよね。すいませんでした。

sage 使ったらしい。sage 入れます。

flag は picoCTF{b1g_numb3rs_689693c6}

Binary

1問だけ解きました。これ Binary なんですかね。

Binary: CVE-XXXX-XXXXX

CVE-XXXX-XXXXX challenge with flag

多分 PrintNightmare かなと思ったら合ってた。この前調べてました。

Forensics

Guess 問だと聞いていたので警戒していました。4問解きました。

Forensics: Eavesdrop

Eavesdrop challenge

Bigdrea6さんが途中 (コマンドのところ) までで詰まっていたのでヘルプ。nc でチャットしてるんですかね?

Eavesdrop wireshark packet dump

Wireshark で見てみると別ポートでバイナリを送っていそう。file.des3 にダンプします。

#18 *sigh* openssl des3 -d -salt -in file.des3 -out file.txt -k supersecretpassword123
#36 Could you transfer the file to me again?
#48 Oh great. Ok, over 9002?
#57
0000   53 61 6c 74 65 64 5f 5f 7d c2 e8 4f fb 47 97 d0
0010   f6 cf 5e ce a2 47 5a 09 4c 62 76 62 4a 35 65 59
0020   6d bc f5 db 52 0b f6 f2 2c 40 d4 4d 98 55 92 c2

会話はこんな感じ。コマンドとかはそのまま実行すれば OK。

$ openssl des3 -d -salt -in file.des3 -out file.txt -k supersecretpassword123
$ cat file.txt
picoCTF{nc_73115_411_dd54ab67}

Forensics: File Types (解けず)

スクリーンショット忘れていそう。

$ file flag
flag: current ar archive
$ unar flag
flag: Ar
Successfully extracted to "./flag-1".
$ file flag-1
flag-1: cpio archive
$ unar flag-1
flag-1: Cpio
Successfully extracted to "./flag-2".
$ file flag-2
flag-2: bzip2 compressed data, block size = 900k
$ unar flag-2
flag-2: Bzip2
Successfully extracted to "./flag-2-1".
$ file flag-2-1
flag-2-1: gzip compressed data, was "flag", last modified: Tue Mar 15 06:50:39 2022, from Unix, original size modulo 2^32 328
$ unar flag-2-1
flag-2-1: Gzip
Successfully extracted to "./flag-2-1-1".
$ file flag-2-1-1
flag-2-1-1: lzip compressed data, version: 1
$ lzip -d flag-2-1-1
$ file flag-2-1-1.out
flag-2-1-1.out: LZ4 compressed data (v1.4+)
$ lz4cat flag-2-1-1.out  > flag-3
$ file flag-3
flag-3: LZMA compressed data, non-streamed, size 254
$ lzmadec -d flag-3  > flag-4
$ file flag-4
flag-4: lzop compressed data - version 1.040, LZO1X-1, os: Unix
$ mv flag-4 flag-4.lzo
$ lzop -d flag-4.lzo
$ file flag-4
flag-4: lzip compressed data, version: 1
$ lzip -d flag-4
$ file flag-4.out
flag-4.out: XZ compressed data, checksum CRC64
$ cat flag-4.out | xz -d > flag-5
$ file flag-5
flag-5: ASCII text
$ cat flag-5
7069636f4354467b66316c656e406d335f6d406e3170756c407431306e5f
6630725f3062326375723137795f37396230316332367d0a

file command 便利。
Unarchiver 便利。
それ以外は Arch Linux の公式リポジトリから適当に入れながら対応しました。

file type

7069636f4354467b66316c656e406d335f6d406e3170756c407431306e5f
6630725f3062326375723137795f37396230316332367d0a

なにこれは

hex なことだけは分かった。チームメンバーに共有しておけば誰かg……

Bigdrea6師匠に解いてもらいました。共有して2分くらいだったしマジで強い。感謝。

Forensics: Operation Oni

Operation Oni challenge

Disk image を適当にマウントして、ssh key を探します。

# losetup -Pfr disk.img
# mkdir -p /mnt/picoctf
# mount -oro /dev/loop0p2 /mnt/picoctf
# mount -oro /dev/loop0p1 /mnt/picoctf/boot
# find /mnt/picoctf -type d -name .ssh
/mnt/picoctf/root/.ssh
# ls /mnt/picoctf/root/.ssh
id_ed25519 id_ed25519.pub
# ssh -i /mnt/picoctf/root/.ssh/id_ed25519 -p 60232 ctf-player@saturn.picoctf.net
$ ls
flag.txt
$ cat flag.txt
picoCTF{k3y_5l3u7h_d6e19567}
$ exit
# umount -R /mnt/picoctf
# losetup -d /dev/loop0

パスワード重要。

Forensics: Operation Orchid

Operation Orchid challenge

Bigdrea6さんが途中で詰まっていた (というか file.txt.enc は見つけたけど分からないという感じだった) のでヘルプ。

パーティションが3つあって1つは swap とかだったような。

# losetup -Pfr disk.img
# mkdir -p /mnt/picoctf
# mount -oro /dev/loop0p3 /mnt/picoctf
# mount -oro /dev/loop0p1 /mnt/picoctf/boot
# ls -a /mnt/picoctf/root
. .. .ash_history flag.txt.enc
# cat /mnt/picoctf/root/.ash_history
touch flag.txt
nano flag.txt
apk get nano
apk --help
apk add nano
nano flag.txt
openssl
openssl aes256 -salt -in flag.txt -out flag.txt.enc -k unbreakablepassword1234567
shred -u flag.txt
ls -al
halt
# openssl aes256 -d -in /mnt/picoctf/root/flag.txt.enc -out flag.txt -k unbreakablepassword1234567
# cat flag.txt
picoCTF{h4un71ng_p457_5113beab}
# umount -R /mnt/picoctf
# losetup -d /dev/loop0

Linuxだと普通に(?) sudo losetup -Pfr (imagefile)/dev/loop0p1 とかが生えるので mount すれば終わりです、p1は/bootであることが多いので、swapあれば飛ばしてその次をまずマウント、んで一応p1をbootにマウントという感じでやっていますねー

です。

Forensics: SideChannel

SideChannel challenge

処理時間が違いそうですね。seccamp でやったやつだ!(ガタッ)

$ time ./pin_checker <<< "48390513"
Please enter your 8-digit PIN code:
8
Checking PIN...
Access granted. You may use your PIN to log into the master server.

real 0m1.083s
user 0m1.078s
sys  0m0.004s

とかを先頭から1桁ずつ進めていって、時間の変化を見ながら答えを探していきました。

$ nc saturn.picoctf.net 52680
Verifying that you are a human...
Please enter the master PIN code:
48390513
Password correct. Here's your flag:
picoCTF{t1m1ng_4tt4ck_e4d7efb}

Reversing

気付いたらチームメンバーが全部解き終わってました。出る幕なし。

中間成績?

10000ptsになったときのrankingです。ここまではよかった。

sokuseki #25

地震

Earthquake

この地震で災害対策モードに入ったこともあり CTF への気持ちが減ってしまいました。東京は無事でよかったです(が電力事情が無事ではない)。つらいですね。

成績

7794チーム中80位だったようです。ありがとうチームメンバー。あまり貢献できずすいません (Web 全完したかったので)。

Discussion