2016年04月

sCTF 2016 Q1 writeup Secure Text Saver

Secure Text Saver60 points  Solved 94 times  Reversing  Zachary Taylor

Will you test out my new program for me? It saves important info and keeps it away from prying eyes!

ダウンロードしたファイルはjarファイルですので、実行してみます。LoginフォームとSign Upフォームがあります。


no title

Sign Upフォームに適当なUsernameとPasswordを入力してSign Upボタンをクリックすると、下図のようにSecure Text Saver画面が表示されます。Save Textに適当な文字列を入力してSaveボタンをクリックすることで、文字列を保存することができるようです。


3


それでは、逆アセンブルして動作を解析します。まず、jarファイルはzip形式で圧縮されているだけなので、そのまま解凍します。次に、javapコマンドで逆アセンブルします。

>javap -c -l -p -v -constants Login_Page.class > aaa.txt

逆アセンブルされた情報をざっと眺めてみると、以下の文字列が怪しそうです。

         0: getstatic     #2                  // Field accounts:Ljava/util/ArrayList;
         3: new           #3                  // class Account
         6: dup          
         7: ldc           #4                  // String ztaylor54
         9: ldc           #5                  // String ]!xME}behA8qjM~T

Usernameにztaylor54、Passwordに]!xME}behA8qjM~Tを入力して、Loginします。


6

次のとおりフラグが表示されました。


7

フラグは、

sctf{w0w_th4t_w45_pr377y_e45y}

です。






sCTF 2016 Q1 writeup rev2

rev245 points  Solved 86 times  Reversing  Arun Dunna

Little bit harder?

The answer will not be in the typical sctf{flag} format, so when you do get it, you must put it into the format by doing sctf{flag_you_found}

ダウンロードしたファイルのファイルタイプをfileコマンドで確認します。Linuxの64bitバイナリです。

$ file rev2

rev2: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3c07a67e1a790d75ac819159d8c7d824704b0fc6, not stripped

objdumpコマンドで逆アセンブルして動作を解析します。

$ objdump -s -D rev2 > aaa.txt

rev1と同様、入力されたデータを数値として読み込み、0x30dda83=51239555と比較して分岐しています。

  40067d:    bf c0 07 40 00           mov    $0x4007c0,%edi            #%d
  400682:    b8 00 00 00 00           mov    $0x0,%eax
  400687:    e8 c4 fe ff ff           callq  400550 <scanf@plt>
  40068c:    8b 45 f8                 mov    -0x8(%rbp),%eax
  40068f:    3d 83 da 0d 03           cmp    $0x30dda83,%eax            #51239555
  400694:    75 7b                    jne    400711 <main+0xbb>

rev2を実行し、パスワードに51239555を入力します。フラグが表示されました。

$ ./rev2
What is the magic password?
51239555
Correct! Your flag is: 51196695

フラグは、

sctf{51196695}

です。






sCTF 2016 Q1 writeup rev1

rev120 points  Solved 134 times  Reversing  Arun Dunna

Let's start out with an easy, typical reversing problem.

The answer will not be in the typical sctf{flag} format, so when you do get it, you must put it into the format by doing sctf{flag_you_found}

ダウンロードしたファイルのファイルタイプをfileコマンドで確認します。Linux用の64bitバイナリのようです。

$ file rev1

rev1: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=82958aa51b05984108d0808209174e172dbf4338, not stripped

実行してみるとパスワードを聞いてきます。適当に入力するとそのまま終了してしまいます。

$ ./rev1
What is the magic password?
aaa

objdumpコマンドで逆アセンブルして動作を解析します。

$ objdump -s -D rev1 > bbb.txt

以下の箇所で、入力されたデータを数値として読み込み、0x5b74=23412との比較結果により分岐しています。

  400688:    bf 60 07 40 00           mov    $0x400760,%edi     #%d
  40068d:    b8 00 00 00 00           mov    $0x0,%eax
  400692:    e8 b9 fe ff ff           callq  400550 <scanf@plt>
  400697:    8b 45 fc                 mov    -0x4(%rbp),%eax
  40069a:    3d 74 5b 00 00           cmp    $0x5b74,%eax       #0x5b74=23412

  40069f:    75 16                    jne    4006b7 <main+0x61>

それではもう一度実行し、パスワードに23412を入力します。フラグが表示されました。

$ ./rev1

What is the magic password?
23412
Correct! Your flag is: h4x0r!!!

フラグは、

sctf{h4x0r!!!}

です。

熱血! アセンブラ入門
坂井弘亮
秀和システム
2015-06-12


sCTF 2016 Q1 writeup Lengthy Lingo

Lengthy Lingo35 points  Solved 104 times  Cryptography  Zachary Taylor

Can you crack the code? We intercepted this flag but can't seem to figure out how it was encrypted.

問題で与えられたファイルencrypted.datは、下記のとおり長桁数数値のカンマ区切りデータです。

8211425851727057573810336026447657378648606436653705214471504337148868375787615020316735272873372782753586827527228, 556583248852048700547687228714654588412241548488486080714105465661031780254061717027244360672162304, 20284544651170808332373262437178385122628242586447832311283361667288254058428121357535201617453654647158765645863507, 641645284837042555065848650227830204734325151143047352176245600677525006432433761200730571563633341874, 342027254152311761208102622711476060766457874721662321275836852351517711811816000537323162350554321727074377662105763512421, 8784438522271173870658770231428186802117155301006, 851271814388572043005646253257882778080174820026, 5152278471687871386558523063450583532127073562672, 58402637862327420571743120302372687101273281802261612756601674607838448505707031861822603516351, 21785101140108815817550581106056205782745154018141824355181082370871280767676236284851681813185837715816764233114503, 75468842754437666045225283217607131215027645570708460660328830332327177142278465383661516060875106636187, 004084640437678015242077825105508301572447342665703, 61481202401520261016664357016073057166333608341162105780323515016101153863676117172660402616212, 67137581235720433002567561134576801515557488388446451143124763477488234883858782254145355582823446828621622608, 361627034030368303676028686247165018284673708054087006308645155621758746177514040254386220583106811757757625237546558, 7810385411342768056733534421023138637284441362835570732441074536146640378166087702208483061622213015864744178, 36444234330553844133752416866028452105102612312567388022042422030572063230885142576850555741308084, 802883230005082840721262220788876753001086347568658, 341534080255806735433265360040272780103741476412352186617443776772213268688384082550850845484428537731847277078525, 10333246418112336008141207026837833383757140678451737, 08134072300283626153024487365357081852686250511232665305416067844633127324036603515586215406375, 6644373087400003840177255780830815845467788518288870370882611671221084040554741222518148623811630880, 1874164531238557446382474665024343750507725185687, 3428147020402505523081340422167387373508255465066108045356323725248343273364407211447325161637834351, 38200286578137344573560145113440874422470378362628547325035243016463725708045276675313550552284628814838001320, 806347380866376761651076678847632341843, 6782405613823305448662505356202253522216848541276876268, 21610750337217487876332037857863745176424178055560780304436148466245250311600818047084626115882, 415801364313780536684357757138703605673323462440428, 1827040640335580766163300361644068715736016848530473076211533371362711571245531763264474443716843266518325024215217713, 136813170810124226561107868288233631777673006131161, 56386101645506650038634685540666532268562572660065816374610141865505515757175067044411064058384018747200824734, 23278556752387282800763002774344020550130044713620824741611878673670284345480652052374014343450, 6554573117028387718748457516242144322752878438280643878616824404212754631068253016383858715753135370265663101, 7071157615018638763862668265461074228266233868268575, 02757727801286747044647151187608680766122643671571562512023570281384607483387264016523454428300602107836128463141727, 64233458887214322415114204638805878308031453712834554240213374675128542444605317148165856405325316707363087756232244, 531847048452644248150014378663516501141163107814524, 868348813862807873166628676351868634540831417145714765101404566857555265252062402176652860660044803785874242872474, 85215280840021114401857327137683348056058207177166561135102265635132711853708453122316516272738347116321284205813607575250722

このファイルのデータをカンマで区切って、数値の桁数を文字コードとして解釈して、文字列を出力するRubyプログラムを書いてみます。

f = File.open("encrypted.dat", "r")
s = f.read
ary = s.split(",")
flag = ""
ary.each do |a|
  flag = flag + a.strip.length.chr
end
p flag

実行すると、次のとおりフラグが表示されました。

"sctf{101_th3_numb3r5_d1dn'7_3v3n_m4tt3r}"

フラグは、

sctf{101_th3_numb3r5_d1dn'7_3v3n_m4tt3r}

です。


たのしいRuby 第5版
高橋 征義
SBクリエイティブ
2016-02-26


sCTF 2016 Q1 writeup Ducks

Ducks30 points  Solved 107 times  Web  Michael Zhang

The ducks and I have a unfinished score to settle.

問題に記載されているリンクをクリックすると、下記のページが表示されます。ページ下部にsource.phpへのリンクがありますのでクリックしてみると、source.phpを取得できます。


no title


source.phpでPasswordをチェックしている箇所を以下に抜粋します。extract関数でPOSTデータを変数に展開しています。そのあとで、$pass変数と$thepassword_123変数が一致しているかチェックし、一致している場合にフラグが表示されるようです。

                    <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { ?>
                        <?php
                        extract($_POST);
                        if ($pass == $thepassword_123) { ?>
                            <div class="alert alert-success">
                                <code><?php echo $theflag; ?></code>

それでは、Fiddlerを起動し、上記ページでsubmitしたときのリクエストを記録します。そして、下図のようにFiddlerでそのリクエストを右クリックし、「Replay」→「Reissue and Edit」を選択します。


1

すると、下図のように画面右側にリクエストを編集して再度リクエストを投げることができる画面が表示されます。Nameにpassとthepassword_123を追加し、Valueはどちらも同じ文字列にします。そして、「Run to Completion」をクリックすると、リクエストが発行されます。


2

すると、下図のとおりレスポンスが返ってきます。


3

フラグは、

sctf{maybe_i_shouldn't_have_extracted_everything_huh}

です。



実践 Fiddler
Eric Lawrence
オライリージャパン
2013-05-25



sCTF 2016 Q1 writeup Banana Boy

Banana Boy20 points  Solved 118 times  Forensics  Zachary Taylor

Carter loves bananas, but I heard a rumor that he's hiding something!

Can you find it?

問題で与えられたファイルは次のような画像ファイルです。


carter

バイナリエディタで確認すると、下図のようにJPEGの終了を表すFF D9の後にJPEGの開始を表すFF D8があります。


no title

FF D8以降をコピーして別ファイルに保存します。そのファイルを表示すると次のような画像ファイルが表示されます。


1

したがって、フラグは、

sctf{tfw_d4nk_m3m3s_w1ll_a1w4y5_pr3v4il}

です。


JPEG―概念からC++での実装まで
橋本 晋之介
ソフトバンククリエイティブ
2004-12




PlaidCTF 2016 writeup Untitled-1.pdf

Untitled-1.pdf

Misc (50 pts)

This PDF has a flag on it, but I can't find it... can you?

ダウンロードしたPDFファイルを表示してみます。特に見た目では怪しいところはありません。


no title

テキストエディタでPDFファイルを確認してみます。次のように、PDFファイルの終端を表す%%EOFのあとに、さらに謎のオブジェクトが続いています。


2

この部分が怪しいので、バイナリエディタで%%EOF以降を削除して保存してみます。PDFファイルを表示してみると次のように表示されます。下の部分の黒い画像がなくなり、白地の部分が現れました。下図では白地に白文字なので見えませんが、選択できるテキストと思われる部分があります。

1

この部分をコピーしてテキストエディタで確認してみると、次のとおりフラグでした。
フラグは、

PCTF{how_2_pdf_yo}

です。


PDFインフラストラクチャ解説
小林 徳滋
アンテナハウスCAS電子出版
2016-01-20



PlaidCTF 2016 writeup the stuff

the stuff

Misc (50 pts)

Can you believe Ryan uses Bing?

ダウンロードしたファイルを解凍すると、パケットキャプチャファイル「the_stuff.pcapng」ができます。まず、stringsコマンドでflagという文字列を探してみます。次のとおりヒットします。

$ strings the_stuff.pcapng | grep flag
Content-Type: application/zip; name="flag.zip"
Content-Disposition: attachment; filename="flag.zip"

該当のパケットをWiresharkで確認してみます。パケット詳細の文字列検索で「flag.zip」で検索します。次のとおり見つかります。


no title

該当のパケットを右クリックして、「追跡」→「TCPストリーム」を選択します。次のとおり、BASE64でエンコードされたflag.zipファイルが出てきます。


1

BASE64エンコードデータの部分をコピペしてデコードしたデータをflag.zipとして保存します。このファイルを解凍するには、パスワードが必要なようです。パケットキャプチャファイルにヒントがないか調べてみます。passwordという文字列を検索してみると、次のとおりヒットしました。

$ strings the_stuff.pcapng | grep password
Yo, you'll need this too: super_password1

「super_password1」というパスワードでzipファイルを解凍すると、次のとおりflag.jpgファイルが出来ます。


flag

したがって、フラグは、

PCTF{LOOK_MA_NO_SSL}

です。






PlaidCTF 2016 writeup sanity check

sanity check

Misc (1 pts)

The flag is PCTF{poop}

Welcome問題。

フラグは、

PCTF{poop}

です。




PlaidCTF 2016 writeup plane_site

plane_site

Misc (75 pts)

What? You can’t see the flag?

ダウンロードしたファイルは次のような画像ファイルです。

plane-site_7272c45023fdd282f32e672f6ffa0013

ImageJで開いて、「Image」→「Adjust」→「Color Balance」を選択します。次のように、Minumumを0から増やしていきます。

1

すると、次の画像のようになります。

2

したがって、フラグは、

PCTF{3_many_s3cr3ts}

です。




記事検索
ギャラリー
  • TetCTF 2023 NewYearBot
  • UUT CTF writeup Find The Password
  • UUT CTF writeup The Puzzle
  • Hack Zone Tunisia 2019 writeup Microscope
  • Hack Zone Tunisia 2019 writeup Welcome
  • SwampCTF 2019 writeup Brokerboard
  • SwampCTF 2019 writeup Leap of Faith
  • SwampCTF 2019 writeup Last Transmission
  • CBM CTF 2019 writeup Long road
カテゴリー