TsukuCTF 2023 writeup #TsukuCTF

TsukuCTF 2023に参加したのでwriteupをば。TsukuCTFといえばOSINTなのにOSINT問やってません。

web – basic

WireSharkで開いてみるとHTTP通信をしている。httpでフィルタするとこんな感じ。
401 Unauthorizedが返ってきた後のリクエストでAuthorizationヘッダにID/パスワード載せて送っている。

httpでフィルタしてみるとわかりやすい

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が出てくる。ベル研って今ノキア傘下なんですね。

"/etc/uids"でググった結果

これは最初期のUNIXのマニュアル。これがフラグ。
余談だけど、フラグフォーマットがTsukuCTF23{xxx}で指定されてるのにずっとxxxをSubmitしててIncorrectになって時間溶かしまくった。あほ。

Flag: TsukuCTF23{UNIX}

他に使えそうな情報

  • ファイル編集にedを使っている。昔はviemacsなんてなかったのだ。
  • 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.oone.oをIDAに食わせて見てみると、main.oからはone_init, a, b, cを参照しているのにone.oのExportテーブルにはone_init, cしかない。

one.oのExportテーブル

main.oone.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の画像が並んでいる感じで文字も含まれている。ということでこれはファミコンのプログラムだなと推測できる。

character.bmp

細かく処理を追っていきたかったが、時間がなかったのでCTFを解く思考に変えた。
どの画像をどういう順番で表示するかをどこかで指定しているはず。
→ざっと見てアセンブラコードにはなさそう
→下の方にdataというデータ列がある
→これがそうに違いない
→各バイトの上4bitをY軸のインデックス、下4ビットをX軸のインデックスと考えるとちょうど文字のところにあたってよさそう
→解読するとTsukushi_Questになる(一番最後は文字じゃない画像なので無視)

Flag: TsukuCTF23{Tsukushi_Quest}

最初、TsukuCTF23{xxx}の形で出てくると思っていたのでTsuまでうまくいった時点で勝利を確信したが、実際はちょっと違った。ゲームタイトルがTsuで始まってなかったらもうちょっと疑いながらやって時間かかったかもしれない。

感想

OSINT問は手を付けていなかったので難易度のほどはわからないけど、他の問題は易しめの難易度でよかった。でもWebは解けない。Writeupみて精進します。

MINI Hardening 4.5に参加した / Hardeningに参加しよう

去る6月17日、MINI Hardening 4 Returns #4.5@未来研究所に参加した。

何だかんだと参加レポートを書かずにいたのでやる気を振り絞って書いてみた。
遅いよ。知ってる。

続きを読む

VAIO Pro 11の無線LAN/Bluetoothモジュールの換装

初代のVAIO Pro 11を7年間使っていたが、先日Bluetooth周りがおかしくなり、デバイスとしては認識されているのだが、Bluetooth機器を接続できなくなってしまった。
LenovoのE495も発注したしVAIO Pro 11も引退間近ではあるのだけど、北海道旅行に行くにあたりBluetoothマウスが使えないと不便だった。

そんな時Amazonを見てたら無線LAN/Bluetoothモジュールが2000円くらいであったので、じゃあいっちょやってみっか、ということで購入して換装したのである。

以下、写真では埃などが溜まって汚く見えるところもあるがご容赦いただきたい。

続きを読む

塗装ブースを自作した

はじめに

1年ほど前からプラモデルの塗装に手を出している。
Twitterではスプーンばっかり塗ってるように見えるかもしれないが、全くもってその通りである。

塗装に際しては、エアテックスのメテオと、サンコーの塗装ブースを使っている。

これらの性能は私には十分だったのだが、音がとてもうるさいという問題があった。
特に塗装ブース。掃除機と同じくらいの音がして、とても耳障りである。
コンプレッサーの方も塗装ブース程ではないけれど音が大きい。

この度、クレオスのL7を買ってコンプレッサー周りの静音化を成し遂げた。

それでは塗装ブースの方も、ということで塗装ブースの静音化に手を出したのである。

続きを読む