前のエントリでグローバル決勝進出の旨を書いたが、この度デトロイトで開催されたAutomotive CTF 2024のグローバル決勝に参加してきた。結果は4位だった。
続きを読む「CTF」タグアーカイブ
Automotive CTF Japan決勝に参加した&writeup
9/13(金)に行われたAutomotive CTF Japanの決勝に「TeamONE」のメンバーとして参加してきた。結果は2位で、米国デトロイトで開催される「Automotive CTF 2024」の決勝に参加できることに。
防衛省サイバーコンテスト2024 (Feb.) writeup
TsukuCTF 2023 writeup #TsukuCTF
TsukuCTF 2023に参加したのでwriteupをば。TsukuCTFといえばOSINTなのにOSINT問やってません。
web – basic
WireSharkで開いてみるとHTTP通信をしている。httpでフィルタするとこんな感じ。401 Unauthorized
が返ってきた後のリクエストでAuthorization
ヘッダにID/パスワード載せて送っている。
Flag: TsukuCTF23{2929b0u4}
ちなみに最速の正解者は44秒で回答してる。マジかよ。
misc – what_os
tty.txt
を見てみると、/etc/uids
という見慣れないファイルがあることに気づく。
# chdir etc
# ls -al
total 34
104 sdrwr- 2 root 110 Jan 1 00:00:00 .
41 sdrwr- 7 root 70 Jan 1 00:00:00 ..
106 lxrwr- 1 bin 5778 Jan 1 00:00:00 as2
105 sxrwr- 1 bin 446 Jan 1 00:00:00 getty
107 sxrwr- 1 sys 2662 Jan 1 00:00:00 glob
108 sxrwr- 1 sys 1192 Jan 1 00:00:00 init
109 sxrwr- 1 sys 186 Jan 1 00:00:00 msh
110 s-rw-- 1 sys 272 Jan 1 00:00:00 passwd
111 s-rwr- 1 root 512 Jan 1 00:00:00 std0
112 s-rwr- 1 bin 2082 Jan 1 00:00:00 suftab
113 s-rwr- 1 sys 88 Jan 1 00:00:00 <strong>uids</strong>
"/etc/uids"
でググると印刷した紙をスキャンしたPDFが出てくる。ベル研って今ノキア傘下なんですね。
これは最初期のUNIXのマニュアル。これがフラグ。
余談だけど、フラグフォーマットがTsukuCTF23{xxx}
で指定されてるのにずっとxxx
をSubmitしててIncorrectになって時間溶かしまくった。あほ。
Flag: TsukuCTF23{UNIX}
他に使えそうな情報
- ファイル編集に
ed
を使っている。昔はvi
やemacs
なんてなかったのだ。 cd
ではなくchdir
を使っている。/usr/sys/maki.s
ググると同様にUNIXの情報が出てくる。cal
で1971年(最初のUNIXがリリースされた年)のカレンダーを表示している。ken
はケン・トンプソン。dmr
はデニス・リッチー (Dennis MacAlistair Ritchie)
misc – build_error
配布ファイルを同じフォルダにおいてmake
すると以下のエラーが出る。
$ make
cc main.o one.o -no-pie
/usr/bin/ld: main.o: in function `main':
main.c:(.text+0x8b): undefined reference to `a'
/usr/bin/ld: main.c:(.text+0x92): undefined reference to `b'
collect2: error: ld returned 1 exit status
make: *** [Makefile:4: all] Error 1
main.o
とone.o
をIDAに食わせて見てみると、main.o
からはone_init, a, b, c
を参照しているのにone.o
のExportテーブルにはone_init, c
しかない。
main.o
とone.o
のIDAでのデコンパイル結果は以下の通り。
int __fastcall main(int argc, const char **argv, const char **envp)
{
int i; // [rsp+4h] [rbp-2Ch]
__int64 v5; // [rsp+8h] [rbp-28h]
__int64 v6; // [rsp+10h] [rbp-20h]
__int64 v7; // [rsp+18h] [rbp-18h]
__int64 v8; // [rsp+20h] [rbp-10h]
v5 = 12LL;
v6 = 11LL;
v7 = 75LL;
one_init(argc, argv, envp);
for ( i = 0; v6 > i; ++i )
{
if ( v5 > i )
++v7;
if ( v7 < i )
++v6;
++v5;
}
v8 = v6 + v5 + v7;
if ( v8 == b + a + c )
printf("flag is %ld\n", v8);
else
puts("please retry");
return 0;
}
__int64 one_init()
{
__int64 result; // rax
int i; // [rsp+0h] [rbp-4h]
a = 12LL;
b = 11LL;
c = 75LL;
for ( i = 0; ; ++i )
{
result = b;
if ( i >= (unsigned __int64)b )
break;
if ( i < (unsigned __int64)a )
++c;
if ( c < (unsigned __int64)i )
++b;
++a;
}
return result;
}
main
の中でone_init
の後にやっている処理はone_init
とまったく同じ処理であることがわかる。one_init
の処理は引数もなく関数外の値に依存せず常に同じ結果になるので、この関数だけ切り出して実行してみればa, b, c
の値がわかる。
a = 23
b = 11
c = 86
Flag: TsukuCTF23{120}
rev – title_screen
配布されたファイルは以下の3つ
- character.bmp
- main.asm
- main.cfg
main.asm
内の命令をググるとどうやら6502
というCPUであることがわかる(冒頭に書いてあるのには気づかなかった!)
どうやらファミコンで使われていたものらしい。画像も見てみると8×8の画像が並んでいる感じで文字も含まれている。ということでこれはファミコンのプログラムだなと推測できる。
細かく処理を追っていきたかったが、時間がなかったのでCTFを解く思考に変えた。
どの画像をどういう順番で表示するかをどこかで指定しているはず。
→ざっと見てアセンブラコードにはなさそう
→下の方にdata
というデータ列がある
→これがそうに違いない
→各バイトの上4bitをY軸のインデックス、下4ビットをX軸のインデックスと考えるとちょうど文字のところにあたってよさそう
→解読するとTsukushi_Quest
になる(一番最後は文字じゃない画像なので無視)
Flag: TsukuCTF23{Tsukushi_Quest}
最初、TsukuCTF23{xxx}
の形で出てくると思っていたのでTsu
までうまくいった時点で勝利を確信したが、実際はちょっと違った。ゲームタイトルがTsu
で始まってなかったらもうちょっと疑いながらやって時間かかったかもしれない。
感想
OSINT問は手を付けていなかったので難易度のほどはわからないけど、他の問題は易しめの難易度でよかった。でもWebは解けない。Writeupみて精進します。
防衛省サイバーコンテスト2023 writeup
Ricerca CTF 2023 writeup (forensics)
参加して1問解きました。
続きを読むSECCON CTF 2022 Finals writeup
Domesticの方にいた。
いろいろあって書けてなくて今更感あるけどけじめとして。
チーム内で分担してて、私はJeopardy担当だったのでKing of the Hillの方は見ておらず何もわからない。
Jeopardyでは2問解いた。
TsukuCTF 2022 writeup
OSINT楽しかった(ただし日本語に限る)。あとGoogleレンズ有能すぎる。
SECCON Beginners CTF 2020 Writeup
もはや日記ではなく年記である。
SECCON Beginners CTF 2020に参加した。
年季的にはBeginnerじゃないけど全然レベルアップしてないからいいのです。
Beginner’s Heap以外のBeginner, Easyレベル問を11問解いて1,433ポイントで70位。
続きを読むSECCON 2017 Online CTF Writeup #seccon
あとはVigenere3dとPowerful ShellとSimonを解いたけど人によって解法が変わるような問題じゃないしWriteupを書くまでもなかろうか。
— てきとう (@tkito) December 10, 2017
スキルも文章力もない奴が何偉そうに言ってんの?(自分です)と思ったので書く。
とあるチームに参加して4問解いた。Submitしたのは上の3問で計500点。