出張 CTF for ビギナーズ 2015 幕張 in
セキュリティ・キャンプ
CTF成果報告
@_193s, @nomuken
自己紹介
- 清水 郁実 (@_193s)
- 1位取りました
- CTF (scryptos)
概要/考察
- 競技時間2時間35分
- 出題傾向?
- winバイナリのrevが多い
- pwn….
- nwが重い?
概要/考察
- 普通のCTFに比べて...
- 時間に対して問題数が多い
- が,問題自体は結構軽い
- 1問にかける時間は10分以内?
- 短い時間で簡単な問題をサクサク解いていく能力が必
要(だった)
結果
解説 (write-up)
- 時間がないのでバンバンいきます
- 自分が解いた問題+αで解説していきます
8. 練習問題 (Misc 10)
FLAGの形式は以下の通りです。
FLAG{W31c0m3_t0_cTf4b!}
各問題毎に隠されたFLAGを見つけ出し、上記
フォーマットで赤字で示された部分を送信してくだ
さい。
8. 練習問題 (Misc 10)
FLAG{W31c0m3_t0_cTf4b!}
1. atob (Misc 10)
Umt4QlIzdGlZWE5sTmpSOQ==
1. atob (Misc 10)
- どう見てもbase64ですね?
- 一回デコードするとRkxBR3tiYXNlNjR9
- これもbase64でデコードできそう
=> FLAG{base64}
2. Unreadable Document (Misc 100)
墨消しされた機密文書(misc100.pdf)、あなたに読
めますか?
2. Unreadable Document (Misc 100)
- “墨消しされた”とあるので黒いブロックでflagを
隠してそう
- 何も考えずにpdf viewerで全選択 & copyする
とflagが出る
=> FLAG{NOT_BLOCK_BUT_BLOKK}
3. Tryout (Web 10)
Can you find out the flag?
http://172.23.246.101
/97a8a726877677ca7d4b8d9d4bf68d38/
3. Tryout (Web 10)
- 普通にアクセスすると”You are not admin. To
acquire the flag, you have to be admin.”とだ
け返ってくる
- Cookieを見ると”admin=false”というのがある
- これをtrueに書き換えてあげると良さそう
3. Tryout (Web 10)
FLAG
{DO_NOT_BELIEVE_THE_INPUT_FROM_US
ERS}
4. Yagihashoo! (Web 100)
- @nomuken
6. Amazing Language (Web 400)
- @nomuken
7. ctf4bbs (Web 500)
This is my first web application. Plz find the
vulnerabilities, and hack this. The flag is in the
browser the administrator uses.
http://172.23.246.101
/21895b22c975deab9423b8b5e0bbe783/
7. ctf4bbs (Web 500)
- “The flag is in the browser the administrator
uses.”とあるのでXSS問題っぽい
7. ctf4bbs (Web 500)
- 普通に<>’”あたりを送っても適切にエスケープさ
れてるっぽいので厳しい?
- htmlの下の方に”for admin => login.php”という
コメントがある
7. ctf4bbs (Web 500)
- login.php?
- pass: ‘+’で送るとadminとしてログインできる
7. ctf4bbs (Web 500)
- adminページ?
- User AgentでXSSできそう -> できた
- 適当に自分のipに飛ばすとadminからリクエストが飛ん
でくる
7. ctf4bbs (Web 500)
- adminページ?
- User AgentでXSSできそう -> できた
- 適当に自分のipに飛ばすとadminからリクエストが飛ん
でくる
7. ctf4bbs (Web 500)
- adminページ?
- User AgentでXSSできそう -> できた
- 適当に自分のipに飛ばすとadminからリクエストが飛ん
でくる
=> FLAG{EXCELLENT!YOU_R_AMAZING!}
9. pwn4b (Pwn 10)
実行されないif文でも…!
nc 172.23.246.151 31337
http://172.23.246.1/ctf-files/pwn4b.c
9. pwn4b (Pwn 10)
#include <stdio.h>
int main(int argc, char *argv[]) {
char name[20];
int flag = 0;
printf("Please input your name: ");
scanf("%s", name);
if (flag) {
printf("FLAG{XXXXXXXXXXXXX}n");
}
}
9. pwn4b (Pwn 10)
- 適当に長い文字列を送るとflagが出る
- (s_canfでbuffer overflowしてflagという変数が適当な
値でoverwriteされるのでif (flag)を通る)
=> FLAG{areyouinterestedinpwn?}
12. Insecure Protocol (Network 10)
Find the FLAG!!
http://172.23.246.1/ctf-files/net10.pcap
12. Insecure Protocol (Network 10)
- telnetの通信が入ったpcap
- wiresharkでfollow tcp-streamするとflagが読めた
12. Insecure Protocol (Network 10)
- telnetの通信が入ったpcap
- wiresharkでfollow tcp-streamするとflagが読めた
=> FLAG{telnet_is_insecure}
18. ENCRYPTION! (Crypt 10)
- JRYPBZR GB PGS SBE ORTVAAREF VA
FRPHEVGL PNZC 2015. GUVF VF GUR
GRFG DHRFGVBA SBE PGS
ORTVAAREF. WHFG QRPELCG JVGU
GUR EBG13 NAQ ERNQ VG. OL GUR JNL,
GUR SYNT VF SYNT
{RAWBLRAPELCGVBA}. RAWBL!
18. ENCRYPTION! (Crypt 10)
- 明らかにrot13なので適当にデコードすると
WELCOME TO CTF FOR BEGINNERS IN SECURITY
CAMP 2015. THIS IS THE TEST QUESTION FOR
CTF BEGINNERS. JUST DECRYPT WITH THE
ROT13 AND READ IT. BY THE WAY, THE FLAG IS
FLAG{ENJOYENCRYPTION}. ENJOY!
18. ENCRYPTION! (Crypt 10)
- 明らかにrot13なので適当にデコードすると
=> FLAG{ENJOYENCRYPTION}
20. CryptoBinary (Crypt 100)
暗号化前はとある実行ファイルだったらしいのだが
…。
http://172.23.246.1/ctf-files/crypto100.zip
20. CryptoBinary (Crypt 100)
00000000 0c 20 2f 25 60 6c 71 73 65 63 63 61 6d 70 73 65 │· /%│`lqs│ecca│mpse│
00000010 61 63 62 6d 71 73 65 63 43 e2 69 78 47 65 63 63 │acbm│qsec│C·ix│Gecc│
00000020 15 7c 70 73 65 63 63 61 59 70 53 65 6a 63 49 6d │·|ps│ecca│YpSe│jcIm│
00000030 6e 73 7e 63 65 61 6d 70 47 65 63 63 55 ed 74 7b │ns~c│eamp│Gecc│U·t{│
00000040 51 e3 67 69 4d 71 73 65 43 62 61 6d 75 73 65 63 │Q·gi│Mqse│Cbam│usec│
…
000005b0 32 a0 6d 67 71 6d 70 73 f9 63 63 61 99 8e 8c 9a │2·mg│qmps│·cca│····│
000005c0 61 63 61 6d 70 73 65 63 63 61 6d 70 73 65 63 63 │acam│psec│camp│secc│
000005d0 61 6d 70 73 65 63 63 61 6d 70 73 65 63 63 61 6d │amps│ecca│mpse│ccam│
000005e0 70 73 65 63 63 61 6d 70 73 65 63 63 61 6d 70 73 │psec│camp│secc│amps│
000005f0 65 63 63 61 6d 70 73 65 63 63 61 6d 70 73 65 63 │ecca│mpse│ccam│psec│
20. CryptoBinary (Crypt 100)
- ‘seccamp’という文字列の繰り返しが目につくの
で,これをrepeated-xor keyとしてデコードして
みる
- elfが出てきたので実行するとflag
- エスパー?
FLAG{51MPLE_X0R_CRYPT06RAPHY}
23. IsBananaPresent (Binary 100)
http://172.23.246.1/ctf-files/bin100.zip
23. IsBananaPresent (Binary 100)
- 条件が揃うとflagを出力する (IsDebuggerPresent, …)
- IDA Debuggerとか適当なデバッガで制御を移せば解ける
=> flag{DUG5C}
24. フラグはなに? (Binary 200)
http://172.23.246.1/ctf-files/bin200.zip
24. フラグはなに? (Binary 200)
- 受け取った文字列が正しいflagかどうかを出力する
- 典型的なrev
- それぞれの文字について,
- (1つ前の文字^0x7f) + 2239*(文字^0x7f) == 定数テーブル[文字の
オフセット]
- みたいな処理をしている
- 適当にpythonでソルバを書いた (https://gist.github.
com/193s/497f2bd0c0c9b28ab10d)
=> FLAG{DOUBLE_KEISUKE}
その他 / 競技中に解けなかった問題
13. Bleeding The Flag!! (Network 100)
このサーバにとある脆弱性のパケットを送ると不思
議な出来事が起こるそうだ
IP: 172.23.246.11
Port: 443/tcp
13. Bleeding The Flag!! (Network 100)
- 解けなかった
- Flagのサブミットが間に合わなかった...
13. Bleeding The Flag!! (Network 100)
- 問題タイトルの“Bleeding”, port 443から
HeartBleedっぽい
- metasploitとかで適当にexploit投げるとflag
- auxiliary/scanner/ssl/openssl_heartbleed
=> FLAG{H34rt_B133d_MAKUHARI}
22. d3demo (Binary 10)
http://172.23.246.1/ctf-files/bin10.zip
22. d3demo (Binary 10)
- HSP製のそれっぽい動画とそのビュワー
- 20分ぐらいの動画を最後まで見てるとflagが出
てくる
- これが正攻法??
(Flag紛失しました)
その他
- pwn100の作問ミス面白かったです
こちらからは以上です
- 関係者各位ありがとうございました

出張 CTF for ビギナーズ 2015 幕張 in セキュリティ・キャンプ 成果報告

  • 1.
    出張 CTF forビギナーズ 2015 幕張 in セキュリティ・キャンプ CTF成果報告 @_193s, @nomuken
  • 2.
    自己紹介 - 清水 郁実(@_193s) - 1位取りました - CTF (scryptos)
  • 3.
    概要/考察 - 競技時間2時間35分 - 出題傾向? -winバイナリのrevが多い - pwn…. - nwが重い?
  • 4.
    概要/考察 - 普通のCTFに比べて... - 時間に対して問題数が多い -が,問題自体は結構軽い - 1問にかける時間は10分以内? - 短い時間で簡単な問題をサクサク解いていく能力が必 要(だった)
  • 5.
  • 6.
    解説 (write-up) - 時間がないのでバンバンいきます -自分が解いた問題+αで解説していきます
  • 7.
    8. 練習問題 (Misc10) FLAGの形式は以下の通りです。 FLAG{W31c0m3_t0_cTf4b!} 各問題毎に隠されたFLAGを見つけ出し、上記 フォーマットで赤字で示された部分を送信してくだ さい。
  • 8.
    8. 練習問題 (Misc10) FLAG{W31c0m3_t0_cTf4b!}
  • 9.
    1. atob (Misc10) Umt4QlIzdGlZWE5sTmpSOQ==
  • 10.
    1. atob (Misc10) - どう見てもbase64ですね? - 一回デコードするとRkxBR3tiYXNlNjR9 - これもbase64でデコードできそう => FLAG{base64}
  • 11.
    2. Unreadable Document(Misc 100) 墨消しされた機密文書(misc100.pdf)、あなたに読 めますか?
  • 12.
    2. Unreadable Document(Misc 100) - “墨消しされた”とあるので黒いブロックでflagを 隠してそう - 何も考えずにpdf viewerで全選択 & copyする とflagが出る => FLAG{NOT_BLOCK_BUT_BLOKK}
  • 13.
    3. Tryout (Web10) Can you find out the flag? http://172.23.246.101 /97a8a726877677ca7d4b8d9d4bf68d38/
  • 14.
    3. Tryout (Web10) - 普通にアクセスすると”You are not admin. To acquire the flag, you have to be admin.”とだ け返ってくる - Cookieを見ると”admin=false”というのがある - これをtrueに書き換えてあげると良さそう
  • 15.
    3. Tryout (Web10) FLAG {DO_NOT_BELIEVE_THE_INPUT_FROM_US ERS}
  • 16.
    4. Yagihashoo! (Web100) - @nomuken
  • 17.
    6. Amazing Language(Web 400) - @nomuken
  • 18.
    7. ctf4bbs (Web500) This is my first web application. Plz find the vulnerabilities, and hack this. The flag is in the browser the administrator uses. http://172.23.246.101 /21895b22c975deab9423b8b5e0bbe783/
  • 19.
    7. ctf4bbs (Web500) - “The flag is in the browser the administrator uses.”とあるのでXSS問題っぽい
  • 20.
    7. ctf4bbs (Web500) - 普通に<>’”あたりを送っても適切にエスケープさ れてるっぽいので厳しい? - htmlの下の方に”for admin => login.php”という コメントがある
  • 21.
    7. ctf4bbs (Web500) - login.php? - pass: ‘+’で送るとadminとしてログインできる
  • 22.
    7. ctf4bbs (Web500) - adminページ? - User AgentでXSSできそう -> できた - 適当に自分のipに飛ばすとadminからリクエストが飛ん でくる
  • 23.
    7. ctf4bbs (Web500) - adminページ? - User AgentでXSSできそう -> できた - 適当に自分のipに飛ばすとadminからリクエストが飛ん でくる
  • 24.
    7. ctf4bbs (Web500) - adminページ? - User AgentでXSSできそう -> できた - 適当に自分のipに飛ばすとadminからリクエストが飛ん でくる => FLAG{EXCELLENT!YOU_R_AMAZING!}
  • 25.
    9. pwn4b (Pwn10) 実行されないif文でも…! nc 172.23.246.151 31337 http://172.23.246.1/ctf-files/pwn4b.c
  • 26.
    9. pwn4b (Pwn10) #include <stdio.h> int main(int argc, char *argv[]) { char name[20]; int flag = 0; printf("Please input your name: "); scanf("%s", name); if (flag) { printf("FLAG{XXXXXXXXXXXXX}n"); } }
  • 27.
    9. pwn4b (Pwn10) - 適当に長い文字列を送るとflagが出る - (s_canfでbuffer overflowしてflagという変数が適当な 値でoverwriteされるのでif (flag)を通る) => FLAG{areyouinterestedinpwn?}
  • 28.
    12. Insecure Protocol(Network 10) Find the FLAG!! http://172.23.246.1/ctf-files/net10.pcap
  • 29.
    12. Insecure Protocol(Network 10) - telnetの通信が入ったpcap - wiresharkでfollow tcp-streamするとflagが読めた
  • 30.
    12. Insecure Protocol(Network 10) - telnetの通信が入ったpcap - wiresharkでfollow tcp-streamするとflagが読めた => FLAG{telnet_is_insecure}
  • 31.
    18. ENCRYPTION! (Crypt10) - JRYPBZR GB PGS SBE ORTVAAREF VA FRPHEVGL PNZC 2015. GUVF VF GUR GRFG DHRFGVBA SBE PGS ORTVAAREF. WHFG QRPELCG JVGU GUR EBG13 NAQ ERNQ VG. OL GUR JNL, GUR SYNT VF SYNT {RAWBLRAPELCGVBA}. RAWBL!
  • 32.
    18. ENCRYPTION! (Crypt10) - 明らかにrot13なので適当にデコードすると WELCOME TO CTF FOR BEGINNERS IN SECURITY CAMP 2015. THIS IS THE TEST QUESTION FOR CTF BEGINNERS. JUST DECRYPT WITH THE ROT13 AND READ IT. BY THE WAY, THE FLAG IS FLAG{ENJOYENCRYPTION}. ENJOY!
  • 33.
    18. ENCRYPTION! (Crypt10) - 明らかにrot13なので適当にデコードすると => FLAG{ENJOYENCRYPTION}
  • 34.
    20. CryptoBinary (Crypt100) 暗号化前はとある実行ファイルだったらしいのだが …。 http://172.23.246.1/ctf-files/crypto100.zip
  • 35.
    20. CryptoBinary (Crypt100) 00000000 0c 20 2f 25 60 6c 71 73 65 63 63 61 6d 70 73 65 │· /%│`lqs│ecca│mpse│ 00000010 61 63 62 6d 71 73 65 63 43 e2 69 78 47 65 63 63 │acbm│qsec│C·ix│Gecc│ 00000020 15 7c 70 73 65 63 63 61 59 70 53 65 6a 63 49 6d │·|ps│ecca│YpSe│jcIm│ 00000030 6e 73 7e 63 65 61 6d 70 47 65 63 63 55 ed 74 7b │ns~c│eamp│Gecc│U·t{│ 00000040 51 e3 67 69 4d 71 73 65 43 62 61 6d 75 73 65 63 │Q·gi│Mqse│Cbam│usec│ … 000005b0 32 a0 6d 67 71 6d 70 73 f9 63 63 61 99 8e 8c 9a │2·mg│qmps│·cca│····│ 000005c0 61 63 61 6d 70 73 65 63 63 61 6d 70 73 65 63 63 │acam│psec│camp│secc│ 000005d0 61 6d 70 73 65 63 63 61 6d 70 73 65 63 63 61 6d │amps│ecca│mpse│ccam│ 000005e0 70 73 65 63 63 61 6d 70 73 65 63 63 61 6d 70 73 │psec│camp│secc│amps│ 000005f0 65 63 63 61 6d 70 73 65 63 63 61 6d 70 73 65 63 │ecca│mpse│ccam│psec│
  • 36.
    20. CryptoBinary (Crypt100) - ‘seccamp’という文字列の繰り返しが目につくの で,これをrepeated-xor keyとしてデコードして みる - elfが出てきたので実行するとflag - エスパー? FLAG{51MPLE_X0R_CRYPT06RAPHY}
  • 37.
    23. IsBananaPresent (Binary100) http://172.23.246.1/ctf-files/bin100.zip
  • 38.
    23. IsBananaPresent (Binary100) - 条件が揃うとflagを出力する (IsDebuggerPresent, …) - IDA Debuggerとか適当なデバッガで制御を移せば解ける => flag{DUG5C}
  • 39.
    24. フラグはなに? (Binary200) http://172.23.246.1/ctf-files/bin200.zip
  • 40.
    24. フラグはなに? (Binary200) - 受け取った文字列が正しいflagかどうかを出力する - 典型的なrev - それぞれの文字について, - (1つ前の文字^0x7f) + 2239*(文字^0x7f) == 定数テーブル[文字の オフセット] - みたいな処理をしている - 適当にpythonでソルバを書いた (https://gist.github. com/193s/497f2bd0c0c9b28ab10d) => FLAG{DOUBLE_KEISUKE}
  • 41.
  • 42.
    13. Bleeding TheFlag!! (Network 100) このサーバにとある脆弱性のパケットを送ると不思 議な出来事が起こるそうだ IP: 172.23.246.11 Port: 443/tcp
  • 43.
    13. Bleeding TheFlag!! (Network 100) - 解けなかった - Flagのサブミットが間に合わなかった...
  • 44.
    13. Bleeding TheFlag!! (Network 100) - 問題タイトルの“Bleeding”, port 443から HeartBleedっぽい - metasploitとかで適当にexploit投げるとflag - auxiliary/scanner/ssl/openssl_heartbleed => FLAG{H34rt_B133d_MAKUHARI}
  • 45.
    22. d3demo (Binary10) http://172.23.246.1/ctf-files/bin10.zip
  • 46.
    22. d3demo (Binary10) - HSP製のそれっぽい動画とそのビュワー - 20分ぐらいの動画を最後まで見てるとflagが出 てくる - これが正攻法?? (Flag紛失しました)
  • 47.
  • 48.