SlideShare a Scribd company logo
某CTF にて
古めかしい問題を
出題した話
自己紹介
• みむら
• Twitter : @mimura1133
• Web : http://mimumimu.net/
• どっかの会社でほのぼのと生息しています。
ところで・・。
私も最近 CTF をやっています
さて。
• 最近、こんな古めかしい画面の UI を
見た方はいませんか?
ごめんなさい出題者です
• Retrospective = 回顧的な.
• ちょっと懐かしめの問題を出しても
いいかなと思いまして・・。
• 今日は Write-up があんまり出ていないようなので
この場でなんとなく Write-up してみようかと。
解き方
キーポイント1
• 文字列は
“SECCON{“ で
始まり
“}” で終わる.
• これが満たされないと エラーになる.
キーポイント2
• 入力エリアの制約より
• 文字数は全部で 28文字以内.
キーポイント3
• 文字列は
“_” で分割される.
• そのうち1つめは
SECCON{LEGACY_
• これが満たされないと エラーになる.
キーポイント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文字ということも分かる.
キーポイント5
• すべての文字を
下記の式で足すと
0x620F3671 になる.
• n = 0;
for(i=0;i<strlen(text);i++) n += text[i]*(2^i);
キーポイント6
•8B292F1A-9C4631B3-E13CD49C-
64EF7454-0352D0C0 は SHA1 の値.
• 初期ベクトル値と桁数で判定.
ということでどう解く?
私の場合・・
• 2段階構成のソルバーを書きました。
• 不明な部分にランダムに初期値を入れて
合計値が一番近くなるように
値をランダムに変更していく手法で近似.
1段目
• 既知の文字列である
“SECCON{LEGACY_VB_”
を元にまず 3セグメント目 を求める.
• 文字列合計値が 0x620F3671 になることを利用.
• 合計値がピッタリ合う組み合わせから
最もらしい値を出す  “P” が選択される.
2段目
• ここまでで求まっている文字列
“SECCON{LEGACY_VB_P_????}”
を元に文字列を探索する.
• 合計値でマッチしたあとに
SHA1 が合致するかを探索
• SECCON{LEGACY_VB_P_CODE} になる。フラグ。
というわけで
某CTF にて
古めかしい問題
(Retrospective)を
出題した話
疑問がありましたらこちらまで:
@mimura1133

More Related Content

PPTX
Iron python と c sharp
PDF
PDF
人工無脳バトル 1st STEP 回答と解説
PDF
Misrac20150523
PDF
AtCoder Beginner Contest 011 解説
PDF
Ctfのためのpython入門
PDF
Square869120 contest #2
PPTX
CTFでアレコレ
Iron python と c sharp
人工無脳バトル 1st STEP 回答と解説
Misrac20150523
AtCoder Beginner Contest 011 解説
Ctfのためのpython入門
Square869120 contest #2
CTFでアレコレ

Similar to 某Ctf にて writeup (20)

PDF
AtCoder Beginner Contest 015 解説
PPTX
MISRA-C2012とISO/IEC 9899:2011 at OSCNagoya2013
PDF
Vinculum
PPTX
Capture the flag write up q13,q20,q21 for ss
PDF
出張 CTF for ビギナーズ 2015 幕張 in セキュリティ・キャンプ 成果報告
PDF
AtCoder Beginner Contest 010 解説
PDF
Kobe sec#8 summary
PDF
BurningCTF write-up
PPTX
Meeting5
PPTX
SECCON2014 crypt200
PDF
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
PDF
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
PDF
Mastermind
PPTX
プログラミング言語「A」 2019 07 08
PDF
AtCoder Beginner Contest 025 解説
PPTX
Misrac20150523
PDF
AtCoder Beginner Contest 029 解説
PDF
JOI予選はランチの後で
PDF
katagaitaictf7_hw_ysk
PPTX
Undecidable Traveler
AtCoder Beginner Contest 015 解説
MISRA-C2012とISO/IEC 9899:2011 at OSCNagoya2013
Vinculum
Capture the flag write up q13,q20,q21 for ss
出張 CTF for ビギナーズ 2015 幕張 in セキュリティ・キャンプ 成果報告
AtCoder Beginner Contest 010 解説
Kobe sec#8 summary
BurningCTF write-up
Meeting5
SECCON2014 crypt200
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
Mastermind
プログラミング言語「A」 2019 07 08
AtCoder Beginner Contest 025 解説
Misrac20150523
AtCoder Beginner Contest 029 解説
JOI予選はランチの後で
katagaitaictf7_hw_ysk
Undecidable Traveler
Ad

More from Satoshi Mimura (12)

PDF
Inside wsl
PPTX
Inside wsl
PDF
おうちで簡単ハードウェアセキュリティ
PDF
Edomae 2015 - マルウェアを解析してみよう
PPTX
Visual Studio で TeX 編集
PDF
3本指ジェスチャでの 仮想デスクトップ機能を Windows に実装した話
PPTX
WHAT_A_KERNEL_IRQL
PPTX
アプリ作者と Windows XP
PPTX
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
PPTX
マシン語によるコード実行
PPTX
Unix と windows 世界の融合
PPTX
Windows Phone 7 と XNA の世界
Inside wsl
Inside wsl
おうちで簡単ハードウェアセキュリティ
Edomae 2015 - マルウェアを解析してみよう
Visual Studio で TeX 編集
3本指ジェスチャでの 仮想デスクトップ機能を Windows に実装した話
WHAT_A_KERNEL_IRQL
アプリ作者と Windows XP
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
マシン語によるコード実行
Unix と windows 世界の融合
Windows Phone 7 と XNA の世界
Ad

某Ctf にて writeup