PicoCTF 2022 Write-up
こんにちは初めまして。お久しぶりです。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
Web
9問解きました。いや、3問解けませんでした。
Web: Inspect HTML
Inspect なので、ページの任意の箇所を右クリックしてコンテキストメニューの "Inspect" を選んで (いやまあそんなことはせずに Ctrl+Shift+I しますが)、DevTools の Elements タブを見ればよいのでしょう。
flag が書いてある HTML comment が body 直下にあって親切ですね。
Web: Includes
Includes ということは、読み込んでいる外部リソースに flag が書いている気がしますね。
まあ普通に js と css のコメントに flag が書いてありました。簡単ですね。
Web: Local Authority
Local Authority ということは、多分認証をフロントエンドで行っているのでしょう。
return true
、初心者にも分かりやすいコードですね。レビューでは指摘しがち。
普通に username と password が分かったので、ログインしてみます。
flag が画面に表示されました。
Web: Search Source
Search ですね、オッケーです。Search してみましょう。
Search するだけです。
Web: Forbidden Paths
Forbidden Paths、Directory Traversal な気がします。
カレントディレクトリと flag のファイル名が分かっているので簡単ですね。Guess 要素がないのは嬉しいです。
Web: Power Cookie
Cookie を書き換えることで権限の昇格が可能な気がします。
画面に flag が表示されます。
Web: Roboto sans (解けず)
Roboto sans はよく見るフォントファミリーの名前ですね。HTML か CSS に flag が書いてあることが予想されます。
評価がかなり低いのが気になりますが……。
はい、お察しの通り解けませんでした。
あとはチームメンバーに「これフォントの何かだと思うんですが解けませんでした……」と共有して、
Bigdrea6さんに解いてもらう だけの簡単なお仕事です。先日助けていただいた猫です。その節はどうもありがとうございました。Web 問なのにすいません……。(Guess とか聞いてないよ!!!)
Web: Secrets
昔懐かしのゴール探しゲームみたいなやつですかね。Guess スイッチを入れて楽しんでいきましょう。
Home ページは何もなさそうです。
Contact ページに怪しいパスの CSS が見えます。
CSS ファイル自体は特に違和感ありません。
そのディレクトリは 403 のようです。
その上は index ページがあるようです。ほぼ答えと書いてあります。
HTML ソースを見ると、怪しい CSS を読み込んでいます。
CSS は空のようです。
そのディレクトリは index ページがあります。
ソースを見るとやはり CSS があります。
CSS は違和感ありません。
そのディレクトリには index ページがあり、
flag が隠れていました。
Web: SQL Direct
普通に 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
SQLite での SQL Injection ですね。
username, password 共に a' or 1 = 1 --
とすると、flag が隠れた状態で表示されます。
(roboto は気にしないでください。)
Crypto
11問解きました。
Crypto: basic-mod1
JS で愚直に実装して終わり。
Crypto: basic-mod2
JS で愚直に実装して終わり。
Crypto: credstuff (手伝ってもらった)
$ 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
モールス信号ですね。
Audacity で波形表示して、適当なツールに入力して、あとは問題文の通りに提出するだけ。
Crypto: rail-fence
Rail Fence Cipher というやつがあるらしい。初めて知りました。
みんな大好き dcode.fr。
Crypto: substitution0
気持ちが少ないので適当なツールで一発。こういうのは次の慢心に繋がります。
Crypto: substitution1 (解けず)
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
みんな大好き 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
みんな大好き dcode.fr。
Crypto: diffie-hellman
よく分かりませんが調べながら解いてみます。
鍵は 5 っぽい。
dcode.fr のやつだと数字をシフトしてくれないので incorrect。
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 (解けず)
マジ感謝。
言い訳します!検索したら漢字いっぱいのサイト出てきたので他のを当たってました!翻訳使え!言い訳終了!
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
多分 PrintNightmare かなと思ったら合ってた。この前調べてました。
Forensics
Guess 問だと聞いていたので警戒していました。4問解きました。
Forensics: Eavesdrop
Bigdrea6さんが途中 (コマンドのところ) までで詰まっていたのでヘルプ。nc でチャットしてるんですかね?
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
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
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
処理時間が違いそうですね。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です。ここまではよかった。
地震
この地震で災害対策モードに入ったこともあり CTF への気持ちが減ってしまいました。東京は無事でよかったです(が電力事情が無事ではない)。つらいですね。
成績
7794チーム中80位だったようです。ありがとうチームメンバー。あまり貢献できずすいません (Web 全完したかったので)。
Discussion