某ctf にて writeup

18
某 CTF 某某 某某某某某某某某 某某某某某

Upload: satoshi-mimura

Post on 11-Feb-2017

472 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: 某Ctf にて writeup

某 CTF にて古めかしい問題を出題した話

Page 2: 某Ctf にて writeup

自己紹介• みむら

• Twitter : @mimura1133• Web : http://mimumimu.net/• どっかの会社でほのぼのと生息しています。

Page 3: 某Ctf にて writeup

ところで・・。私も最近 CTF をやっています

Page 4: 某Ctf にて writeup

さて。•最近、こんな古めかしい画面の UI を

見た方はいませんか?

Page 5: 某Ctf にて writeup

ごめんなさい出題者です•Retrospective = 回顧的な .• ちょっと懐かしめの問題を出しても

いいかなと思いまして・・。

• 今日は Write-up があんまり出ていないようなのでこの場でなんとなく Write-up してみようかと。

Page 6: 某Ctf にて writeup

解き方

Page 7: 某Ctf にて writeup

キーポイント 1•文字列は

“ SECCON{“ で始まり “ }” で終わる .

• これが満たされないと エラーになる .

Page 8: 某Ctf にて writeup

キーポイント 2•入力エリアの制約より• 文字数は全部で 28 文字以内 .

Page 9: 某Ctf にて writeup

キーポイント 3• 文字列は

“ _” で分割される .

• そのうち 1 つめはSECCON{LEGACY_

• これが満たされないと エラーになる .

Page 10: 某Ctf にて writeup

キーポイント 4• 2 ブロック目 // 仮に s[1]3 ブロック目 // 仮に s[2]• n=0;

for(i=0;i<strlen(s[1]);i++) i+=str[1][i]*(4^i);if(n != 350 OR strlen(s[1]) != 2) break; // ERROR.

• n = n*256;for(i=0;i<strlen(s[2]);i++) i+=str[1][i]*(4^i);if(n != 89686) break; // ERROR.

• 故に 89686-(350*256) = 86 = ‘V’. であり 2 文字目は’ B’ となりSECCON{LEGACY_VB_?_????} ということが分かる .

• また 3 ブロック目は 1 文字ということも分かる .

Page 11: 某Ctf にて writeup

キーポイント 5

•すべての文字を下記の式で足すと0x620F3671 になる .• n = 0;

for(i=0;i<strlen(text);i++) n += text[i]*(2^i);

Page 12: 某Ctf にて writeup

キーポイント 6

•8B292F1A-9C4631B3-E13CD49C-64EF7454-0352D0C0 は SHA1 の値 .• 初期ベクトル値と桁数で判定 .

Page 13: 某Ctf にて writeup

ということでどう解く?

Page 14: 某Ctf にて writeup

私の場合・・• 2 段階構成のソルバーを書きました。•不明な部分にランダムに初期値を入れて

合計値が一番近くなるように値をランダムに変更していく手法で近似 .

Page 15: 某Ctf にて writeup

1 段目•既知の文字列である

“ SECCON{LEGACY_VB_”を元にまず 3 セグメント目 を求める .• 文字列合計値が 0x620F3671 になることを利用 .• 合計値がピッタリ合う組み合わせから

最もらしい値を出す “ P” が選択される .

Page 16: 某Ctf にて writeup

2 段目•ここまでで求まっている文字列

“ SECCON{LEGACY_VB_P_????}”を元に文字列を探索する .• 合計値でマッチしたあとに

SHA1 が合致するかを探索• SECCON{LEGACY_VB_P_CODE} になる。フラグ。

Page 17: 某Ctf にて writeup

というわけで

Page 18: 某Ctf にて writeup

某 CTF にて古めかしい問題(Retrospective) を出題した話疑問がありましたらこちらまで:

@mimura1133