katagaitai CTF勉強会 #5 Crypto
-
Upload
ryoichi-teramura -
Category
Technology
-
view
364 -
download
3
Transcript of katagaitai CTF勉強会 #5 Crypto
![Page 1: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/1.jpg)
CTF勉強会 #5
Crypto
2016.07.16 TOKYO / 2016.08.28 OSAKA
trmr (@trmr105)
katagaitai
![Page 2: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/2.jpg)
注意事項
本スライドは勉強会で利用したものを元に作成しています
勉強会では問題サーバを利用しましたがすでに停止しています
問題サーバのIPやホスト名が出てくる箇所は、随時読み替えをお願いします
リンク切れ等ご容赦ください
最後のページに勉強会参加者のwriteupを載せています
ぜひそちらも参照してください
2
![Page 3: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/3.jpg)
#5 はじまるよー!
katagaitai CTF勉強会の歴史
2012年~2014年:某所での下積み時代
2014年冬:CTF勉強会 #1 (関東|関西)
2015年夏:CTF勉強会 #2 (関東)
2015年冬:CTF勉強会 #3 Hard (関東)
2015年冬:CTF勉強会 #4 Medium (関東|関西)
2016年夏:CTF勉強会 #5 Medium(関東|関西)
2016年夏:CTF勉強会 #6 Easy
下記URLで過去の勉強会資料を公開中
http://www.slideshare.net/bata_24
http://www.slideshare.net/trmr105
イマココ!
3
同時期2本つらかった…。
![Page 4: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/4.jpg)
katagaitai勉強会とは
好きなことを分かり合える人を増やしたい!
4
![Page 5: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/5.jpg)
katagaitaiと愉快な仲間たち #5を担当する人
bata(@bata_24)
trmr(@trmr105)
#6を担当する人
yagihash(@yagihashoo)
shironoo(@shironoo)
Special Thanks!
askn(@asai_ken)
ysk(@y_sk256)
5
We are katagaitai!
and so on..
![Page 6: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/6.jpg)
今日の問題
[hack you 2014] Crypto200 – hashme
[Plaid CTF 2014] Crypto250 - Parlor
[ebCTF 2013] bin400 – MD5 COLLIDING
6
![Page 7: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/7.jpg)
今日の問題を選んだ理由
ハッシュ関数をやりたかった!
#3 #4でブロック暗号をやった!
公開鍵暗号はどうしよう…。
「簡単」「意味不明」に二極化しそう
CTFの暗号問題として易しめ
その分午後が難しいのでOK
7
熟考したうえでの出題!
![Page 8: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/8.jpg)
CTFとハッシュ関数8
![Page 9: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/9.jpg)
CTFにおけるハッシュ問題の分類
大きく以下のように分類
9
利用ハッシュ関数
公知のハッシュ
独自ハッシュ
利用脆弱性
アルゴリズム
プロトコル
原像
衝突
レングスエクステンション
分類
その他(主にPPC)
![Page 10: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/10.jpg)
CTFにおけるハッシュ問題の分類
大きく以下のように分類
10
利用ハッシュ関数
公知のハッシュ
独自ハッシュ
利用脆弱性
アルゴリズム
プロトコル
原像
衝突
レングスエクステンション
分類
その他(主にPPC)
注目!
![Page 11: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/11.jpg)
原像攻撃 ハッシュ値から元のメッセージを復元する攻撃
CTFでの傾向
出題頻度は低い
原像攻撃が可能なハッシュ関数が少ない
参考問題
hack you too - Everybody lies
11
ハッシュ関数
𝑀
ℎ(𝑀)
ハッシュ値から元のメッセージを復元!!
![Page 12: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/12.jpg)
[参考]第二原像攻撃
特定のメッセージと同じハッシュ値を生成する別のメッセージを復元する攻撃
12
ハッシュ関数
𝑀
ℎ(𝑀)
ハッシュ関数
𝑀′
同じハッシュ値を出力するメッセージを復元!
![Page 13: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/13.jpg)
衝突攻撃
任意のメッセージと同じハッシュ値を生成する別のメッセージを特定する攻撃
CTFでの傾向
出題頻度:高
参考問題
ebCTF 2013 - bin400
Hack.lu 2013 - Geier's Lambda
BkP 2014 - Xorxes the Hash
HITCON CTF 2014 – wtf6
Olympic CTF 2014 - LHC
SECCON 2015 - Please give me MD5
13
ハッシュ関数
𝑀
ℎ(𝑀)
ハッシュ関数
𝑀′ 同じハッシュ値を出力するペアを発見!※Mはどんな値でも可
![Page 14: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/14.jpg)
ハッシュレングスエクステンション
説明は後述
CTFでの傾向
出題頻度:高
レングスエクステンション自体が問題ではなく、レングスエクステンションで解けると思いつかせることに焦点を当てた問題が増えてる
参考問題
hack you 2012 - hashme
Plaid 2014 – Parlor
Olympic CTF 2014 – Emdee
Gits 2015 – Knockers
14
![Page 15: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/15.jpg)
その他(主にPPC)
ハッシュ関数を利用したプロトコルの脆弱性を探す問題
例題
与えられたハッシュに対して下記条件を満たす入力を探索
いかに高速に入力値を探索するかが重要
ハッシュでなくても問題は成立するためハッシュ問題とするかは?
参考問題
SECUINSIDE CTF 2014 Final - HashGame
HITCON 2014 – ginger
Hack.lu 2015 – Checkcheckcheck
BkP 2016 – ltseorg
15
入力1のハッシュ
入力2のハッシュ
入力3のハッシュ
+
+
与えられたハッシュ=
![Page 16: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/16.jpg)
今日やるのはこれ
大きく以下のように分類
16
利用ハッシュ関数
公知のハッシュ
独自ハッシュ
利用脆弱性
アルゴリズム
プロトコル
原像
衝突
レングスエクステンション
分類
その他(主にPPC)Hash Length Extension
Collision
![Page 17: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/17.jpg)
[hack you 2014]Crypto200 - hashme
17
![Page 18: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/18.jpg)
朝の待ち時間の有効活用①サーバにつなげてみよう
$ nc katagaitai.orz.hm 7777 (17777 or 27777 or 37777)
②ローカルで待ち受けてみよう
# socat tcp-listen:7777,fork,reuseaddr exec:"stdbuf -i0 -o0 python crypto200.py“
③問題を眺めてみよう
18 10分
![Page 19: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/19.jpg)
hashmeを見てみよう
0を入力した場合
19
名前入力を要求
証明書を発行
![Page 20: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/20.jpg)
hashmeを見てみよう
1を入力した場合
20
①証明書を要求
②証明書を入力③Welcome!
で、何すればいいの?
![Page 21: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/21.jpg)
hashmeを見てみよう21
crypto200.py
![Page 22: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/22.jpg)
hashmeを見てみよう
0を入力するとgen_cert関数に遷移
22
![Page 23: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/23.jpg)
hashmeを見てみよう
0を入力するとgen_cert関数に遷移
23
①ユーザの入力値にrole=”anonymous”を付与
![Page 24: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/24.jpg)
hashmeを見てみよう
0を入力するとgen_cert関数に遷移
24
② “SALT+①の値”のハッシュ値を生成
①ユーザの入力値にrole=”anonymous”を付与
![Page 25: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/25.jpg)
hashmeを見てみよう
0を入力するとgen_cert関数に遷移
25
③鍵と②の値をXoRし「証明書」を生成
② “SALT+①の値”のハッシュ値を生成
①ユーザの入力値にrole=”anonymous”を付与
![Page 26: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/26.jpg)
hashmeを見てみよう
0を入力するとgen_cert関数に遷移
26
③鍵と②の値をXoRし「証明書」を生成
② “SALT+①の値”のハッシュ値を生成
①ユーザの入力値にrole=”anonymous”を付与
サーバしか知らない鍵とSALTの値でrole=‘anonymous’の「証明書」を生成
![Page 27: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/27.jpg)
hashmeを見てみよう 1を入力するとauth関数に遷移
27
①鍵と入力された「証明書」を
XoR
![Page 28: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/28.jpg)
hashmeを見てみよう 1を入力するとauth関数に遷移
28
①鍵と入力された「証明書」を
XoR
② “SALT+①の値”のハッシュ値を生成
![Page 29: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/29.jpg)
hashmeを見てみよう 1を入力するとauth関数に遷移
29
①鍵と入力された「証明書」を
XoR
② “SALT+①の値”のハッシュ値を生成
③ role=”administrator”が付与されていればflag
![Page 30: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/30.jpg)
hashmeを見てみよう 1を入力するとauth関数に遷移
30
サーバの鍵とSALTの値で生成されたrole=‘administrator’の「証明書」が必要
①鍵と入力された「証明書」を
XoR
② “SALT+①の値”のハッシュ値を生成
③ role=”administrator”が付与されていればflag
![Page 31: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/31.jpg)
問題の要点 1.証明書の権限
自分で作成できる証明書はrole=anonymous
flag獲得に必要な証明書はrole=administrator
2.ローカルで証明書を偽造する
鍵とSALTを手に入れる必要あり
3.サーバに証明書を偽造させる
role=administratorを付与できない
31
入力にuser&role=administratorを付与してもはじかれる
「文字,数字,_」のみ入力可能…
![Page 32: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/32.jpg)
今回のハッシュ関数(hashme)32
あやしい固定値
![Page 33: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/33.jpg)
暗号問題はぐぐる33
hashmeはMD5やSHA-1などをベースにしたハッシュ関数
![Page 34: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/34.jpg)
暗号問題はぐぐる34
hashmeはMD5やSHA-1などをベースにしたハッシュ関数
Merkle-Damgård構造
![Page 35: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/35.jpg)
Merkle-Damgård構造35
Hello, World
m1 m2 m3
①メッセージを分割
pad
②パディング付与
![Page 36: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/36.jpg)
Merkle-Damgård構造36
内部状態𝐼𝑉 …
Hello, World
m1 m2 m3
①メッセージを分割
pad
②パディング付与
関数
R
関数
R
関数
R
関数
R
③分割したメッセージごとに処理を繰り返して内部状態を生成
![Page 37: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/37.jpg)
Merkle-Damgård構造37
内部状態𝐼𝑉 …
Hello, World
m1 m2 m3
①メッセージを分割
pad
②パディング付与
関数
R
関数
R
関数
R
関数
R
③分割したメッセージごとに処理を繰り返して内部状態を生成
e4d7f1b4ed2e42d15898f4b27b019da4
出力関数
④内部状態からハッシュ値を出力
![Page 38: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/38.jpg)
Merkle-Damgård構造
Merkle-Damgård構造を利用したハッシュ関数
MD4
MD5
SHA-1
SHA-2 family
それらをベースにした独自ハッシュ
CTF目線のMerkle-Damgård構造
レングスエクステンション攻撃が可能
38
![Page 39: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/39.jpg)
ハッシュレングスエクステンション
39
![Page 40: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/40.jpg)
例)MD5の場合40
内部状態𝐼𝑉 …
Hello, World
m1 m2 m3 pad
関数
R
関数
R
関数
R
関数
R
出力関数
e4d7f1b4ed2e42d15898f4b27b019da4
注目!
MD5もMerkle-Damgård構造で構成
![Page 41: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/41.jpg)
MD5の出力関数41
内部状態𝐼𝑉 …
関数
R
関数
R
関数
R
関数
R
出力関数
MD5もMerkle-Damgård構造で構成
内部状態
A:32bit
B:32bit
C:32bit
D:32bit
内部状態は128bit
![Page 42: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/42.jpg)
MD5の出力関数
Finalize処理
42
内部状態
A:32bit
B:32bit
C:32bit
D:32bit
A:32bit B:32bit C:32bit D:32bit
内部状態をそのまま出力
出力関数
ハッシュ値
![Page 43: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/43.jpg)
MD5の内部状態復元
ハッシュ値があれば
43
e4d7f1b4ed2e42d15898f4b27b019da4
![Page 44: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/44.jpg)
MD5の内部状態復元
ハッシュ値があれば
44
A:32bit B:32bit C:32bit D:32bit
e4d7f1b4ed2e42d15898f4b27b019da4
32bitごとに分割
![Page 45: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/45.jpg)
MD5の内部状態復元
ハッシュ値があれば
45
内部状態
A:32bit
B:32bit
C:32bit
D:32bit
A:32bit B:32bit C:32bit D:32bit
内部状態を復元可能
e4d7f1b4ed2e42d15898f4b27b019da4
32bitごとに分割
![Page 46: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/46.jpg)
レングスエクステンション46
内部状態𝐼𝑉
???????????
m1 pad
関数
F
関数
F
e4d7f1b4ed2e42d15898f4b27b019da4
ハッシュ値から内部状態を復元
…
手に入る!
分からない…
![Page 47: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/47.jpg)
レングスエクステンション47
内部状態𝐼𝑉
???????????
m1 pad
関数
F
関数
F
e4d7f1b4ed2e42d15898f4b27b019da4
ハッシュ値から内部状態を復元
…
分からない…
関数
R
m’1
関数
R
m’2
メッセージを付加することが可能
NEW内部状態
893e3aa5b11ca4a0722deeacf66901bb
![Page 48: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/48.jpg)
レングスエクステンション48
内部状態𝐼𝑉
???????????
m1 pad
関数
F
関数
F
e4d7f1b4ed2e42d15898f4b27b019da4
ハッシュ値から内部状態を復元
…
分からない…
関数
R
m’1
関数
R
m’2
メッセージを付加することが可能
NEW内部状態
893e3aa5b11ca4a0722deeacf66901bb
元の文字列(不明)にm’1, m’2を付与したハッシュ値
![Page 49: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/49.jpg)
元のメッセージ(+padding)値に、任意のメッセージを付与したハッシュ値を導出可能
49
𝑚𝑑5𝑠𝑢𝑚(hello) = e4d7f1b4ed2e42d15898f4b27b019da4
たとえXが分からなくても
X
レングスエクステンション
![Page 50: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/50.jpg)
元のメッセージ(+padding)値に、任意のメッセージを付与したハッシュ値を導出可能
50
𝑚𝑑5𝑠𝑢𝑚(hello) = e4d7f1b4ed2e42d15898f4b27b019da4
𝑚𝑑5𝑠𝑢𝑚( + + )=893e3aa5b11ca4a0722deeacf66901bb
たとえXが分からなくても
X+pad+任意のメッセージのハッシュ値は導出できる
X
X
レングスエクステンション
pad 任意のM
![Page 51: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/51.jpg)
今回のハッシュ関数(hashme)51
![Page 52: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/52.jpg)
今回のハッシュ関数(hashme)52
Merkle-Damgårdっぽい
出力部分は?
![Page 53: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/53.jpg)
hashmeの出力関数
Finalize処理
53
内部状態
A:32bit
B:32bit
C:32bit
D:32bit
A:32bitB:32bit C:32bitD:32bit
MD5と違って、内部状態を順番変えて出力してる!!
e4d7f1b4ed2e42d15898f4b27b019da4
![Page 54: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/54.jpg)
hashmeの出力関数
Finalize処理
54
内部状態
A:32bit
B:32bit
C:32bit
D:32bit
A:32bitB:32bit C:32bitD:32bit
MD5と違って、内部状態を順番変えて出力してる!!
e4d7f1b4ed2e42d15898f4b27b019da4
問題なくハッシュ値から内部状態を復元可能
レングスエクステンションが可能
![Page 55: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/55.jpg)
hashmeの認証関数
parse_qs
ユーザの入力を辞書に変換する関数
parse_qsで作成した辞書のキー’role’の要素が’administrator’ならFLAGゲット
→ どのようにユーザの入力を辞書に変換している?
55
![Page 56: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/56.jpg)
parse_qs56
/usr/lib/python2.7/urlparse.py
キーが重複している場合、両方の要素が辞書に登録
![Page 57: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/57.jpg)
flagの取り方を考える
通常サーバは次のハッシュ値を生成
hashme(SALT+user=‘’&role=anonymous)
57
{role:anonymous}のみ登録
![Page 58: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/58.jpg)
flagの取り方を考える
通常サーバは次のハッシュ値を生成
hashme(SALT+user=‘’&role=anonymous)
上記ハッシュ値を元にレングスエクステンションを実施して、&role=administratorを付与すると、次のハッシュ値が手に入るはず
hashme(SALT+user=‘’&role=anonymous+pad+&role=administrator)
58
{role:anonymous+pad}と{role:administrator}が共に登録
{role:anonymous}のみ登録
![Page 59: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/59.jpg)
hashmeの認証関数
parse_qs
ユーザの入力を辞書に変換する関数
parse_qsで作成した辞書のキー’role’の要素が’administrator’ならFLAGゲット
→ どのようにユーザの入力を辞書に変換している?
59
If ‘administrator’ in data[‘role’]→ FLAG獲得!
![Page 60: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/60.jpg)
方針
レングスエクステンションでrole=‘administrator’を付与してやればよい
しかしこの問題はあと2つハードルがある
直接ハッシュ値が手に入らない
サーバだけが知ってる鍵でXoR
若干MD5と異なるハッシュ関数が採用
既存のツールがそのまま使えない
方針
1. サーバにて鍵でXoRしたハッシュ値を発行
2. 鍵を導出し、ハッシュ値を手に入れる
3. レングスエクステンションで権限付与
4. 2で導出した鍵で権限を付与したハッシュ値をXoR
60
どうやって鍵を導出する?
少しMD5と仕様が違う?
![Page 61: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/61.jpg)
実習
とりあえずやってみましょう
Writeupを同梱しているので分からない人は参考に
解けた人は本資料の最後のおまけをやってみてください
Plaid CTF 2014 – Parlor
nc katagaitai.orz.hm 4321 (or 14321, 24321, 34321)
質問、要望、音楽のリクエストなど→ #katagaitaiCTF
40分61
![Page 62: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/62.jpg)
解答
方針
1. サーバにて鍵でXoRしたハッシュ値を発行
2. 鍵を導出し、ハッシュ値を手に入れる
3. ハッシュレングスエクステンションで権限付与
4. 2で導出した鍵で権限を付与したハッシュ値をXoR
62
鍵の導出パート
ハッシュレングスエクステンションパート
![Page 63: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/63.jpg)
解答(鍵の導出)
方針
1. サーバにて鍵でXoRしたハッシュ値を発行
2. 鍵を導出し、ハッシュ値を手に入れる
63
ハッシュ値の形式は?
KEY KEY KEY KEY KEY
auth_str hashme(SALT+auth_str)
auth_strは自分で入力した値
鍵は繰り返し利用
![Page 64: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/64.jpg)
解答(鍵の導出)
方針
1. サーバにて鍵でXoRしたハッシュ値を発行
2. 鍵を導出し、ハッシュ値を手に入れる
64
ハッシュ値の形式は?
KEY KEY KEY KEY KEY
auth_str hashme(SALT+auth_str)
auth_strは自分で入力した値
auth_str
鍵は繰り返し利用
KEY KEY
Auth_strをXoRすれば鍵が手に入る
![Page 65: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/65.jpg)
解答(鍵の導出)
方針
1. サーバにて鍵でXoRしたハッシュ値を発行
2. 鍵を導出し、ハッシュ値を手に入れる
65
ハッシュ値の形式は?
KEY KEY KEY KEY KEY
auth_str hashme(SALT+auth_str)
auth_strは自分で入力した値
auth_str
鍵は繰り返し利用
KEY KEY
Auth_strをXoRすれば鍵が手に入る
鍵をXoRすれば
hashme(auth_str)が手に入る
![Page 66: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/66.jpg)
解答(鍵の導出)66
solve_key.py
Auth_strをXoRして鍵を導出
実行結果
![Page 67: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/67.jpg)
解答(ハッシュレングスエクステンション)
hashme関数
67
![Page 68: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/68.jpg)
解答(ハッシュレングスエクステンション)
hashme関数
68
hashmeの処理に使われるiの値がSALTに依存→ SALTは手に入れることができない→ hashmeの処理を実行できない→ レングスエクステンションできない→ 詰んだ
![Page 69: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/69.jpg)
解答(ハッシュレングスエクステンション)
hashme関数
69
hashmeの処理に使われるiの値がSALTに依存→ SALTは手に入れることができない→ hashmeの処理を実行できない→ レングスエクステンションできない→ 詰んだ
i & 0x1f→ 32通りしかない→ 全部試せばいい
![Page 70: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/70.jpg)
解答(ハッシュレングスエクステンション)70
ログインしたいユーザを作成
証明書、鍵を入力
solver_hashme.py
![Page 71: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/71.jpg)
71 解答(ハッシュレングスエクステンション)
solver_hashme.py
![Page 72: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/72.jpg)
72 解答(ハッシュレングスエクステンション)
証明書からハッシュ値を取り出し
solver_hashme.py
![Page 73: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/73.jpg)
73 解答(ハッシュレングスエクステンション)
証明書からハッシュ値を取り出し
solver_hashme.py
内部状態を再構成
![Page 74: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/74.jpg)
74 解答(ハッシュレングスエクステンション)
証明書からハッシュ値を取り出し
solver_hashme.py
内部状態を再構成
レングスエクステンションを実施してログイン施行を32回実施
![Page 75: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/75.jpg)
75 解答(ハッシュレングスエクステンション)
実行結果
Flagゲット!
![Page 76: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/76.jpg)
解答
FLAG{2016_is_5th_aniversary_of_katagaitai}
katagaitaiは今年で結成5周年を迎えました
前身の活動を入れればもうちょい長い?
これもひとえにみなさまのおかげ
残念ながらメンバーの平均年齢もほぼ+5歳…
yagihash, shironooの加入で若返れるか?
[参考]Flickr’s API Attack
http://netifera.com/research/flickr_api_signature_forgery.pdf
[参考] hash extender
https://github.com/iagox86/hash_extender
76
![Page 77: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/77.jpg)
おまけ(宿題)77
![Page 78: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/78.jpg)
[Plaid CTF 2014]Crypto250 Parlor
78
![Page 79: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/79.jpg)
アクセスしてみる
①サーバにつなげてみよう
$ nc katagaitai.orz.hm 4321 (14321 or 24321 or 34321)
79
![Page 80: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/80.jpg)
ゲームの仕組
1) set your odds : oddsを指定
odds = 2^入力値がmoduloとして扱われる
2) set your bet : betするmoneyを指定
3) play a round : 下記のゲームを開始
80
md5(secret + ) % odds
秘密の値(our number) 1で指定した値
![Page 81: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/81.jpg)
ゲームの仕組
1) set your odds : oddsを指定
odds = 2^入力値がmoduloとして扱われる
2) set your bet : betするmoneyを指定
3) play a round : 下記のゲームを開始
81
md5(secret + ) % odds
秘密の値(our number) 1で指定した値
your number
値を指定
![Page 82: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/82.jpg)
ゲームの仕組
1) set your odds : oddsを指定
odds = 2^入力値がmoduloとして扱われる
2) set your bet : betするmoneyを指定
3) play a round : 下記のゲームを開始
4) 総金額が1,000,000,000を超えるとFLAGゲット!
82
md5(secret + ) % odds
秘密の値(our number) 1で指定した値
your number
値を指定
≡ 0
≡0
bet * oddsの金額をゲット
betした金額を失う…
![Page 83: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/83.jpg)
ゲームの還元率
勝つ確率は2^(-odds)、倍率は2^(odds)。
還元率は100%
ギャンブルとしては割がいい
が、$1000→$1,000,000,000まで増やすのはかなりの強運が必要
100万回程度アクセスすれば可能かも?
1アクセス1秒としても278時間程度必要
83
![Page 84: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/84.jpg)
Hint 1 : 問題の整理
なぜこの問題が難しいのか
リモートサーバに対する100万回アクセスが困難
→ ローカルで実施する場合100万回計算は短時間で可能
なぜローカルで実施できないのか
md5の入力値のprefixが手に入らないためハッシュ値が計算できない
→ 入力値のprefixが手に入らなくてもハッシュ値が計算できれば?
84
入力値がなくともハッシュ値を計算できる手法を利用
![Page 85: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/85.jpg)
Hint 2 : ハッシュ値の出力
レングスエクステンション
レングスエクステンションには元のハッシュ値が必要
今回の問題ではハッシュ値は直接出力されない
ハッシュ値の特定
どうやればできるだけハッシュ値を出力できるか
85
md5(input)
md5(input) % 2^oddsのみ出力
![Page 86: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/86.jpg)
Hint 3 : ハッシュ値の特定
ハッシュ値の特定
残りの不明箇所を推測
推測した値が正しいか答え合わせする必要
サーバのハッシュ値との比較
正しい答えを知っているオラクルはサーバしかない
どうすれば、サーバと推測した値の答え合わせができる?
86
ハッシュ値の大部分を特定!不明な箇所を推測
![Page 87: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/87.jpg)
Hint 3 : ハッシュ値の特定
ハッシュ値の特定
残りの不明箇所を推測
推測した値が正しいか答え合わせする必要
サーバのハッシュ値との比較
正しい答えを知っているオラクルはサーバしかない
どうすれば、サーバと推測した値の答え合わせができる?
87
ハッシュ値の大部分を特定!不明な箇所を推測
Let’s Try!
![Page 88: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/88.jpg)
[ebCTF 2013]bin400 – md5colliding
88
![Page 89: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/89.jpg)
md5collidingを見てみよう89
![Page 90: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/90.jpg)
md5collidingを見てみよう90
下記条件を満たすPE32形式のファイルを5つ作成
① 5つのファイルはそれぞれ実行結果が異なること
C:¥>1.exe
All Eindbazen are wearing wooden
………………
C:¥>5.exe
All Eindbazen are cheap bastards
② 5つのファイルはすべて同じMD5ハッシュとなること
$ md5sum 1.exe
656ed3d6b9b227856f7621666ce73081 1.exe
………………
$ md5sum 5.exe
656ed3d6b9b227856f7621666ce73081 5.exe
③ 5つのファイルはすべて異なるSHA1ハッシュとなること
$ sha1sum 1.exe
d36e8ae2ad1bc32d451e04d5ee28624017130336 1.exe
………………
$ sha1sum 5.exe
b8a596e0ecbfdf7d266697c0274b34075b2147e3 5.exe
![Page 91: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/91.jpg)
md5collidingを見てみよう91
下記条件を満たすPE32形式のファイルを5つ作成
① 5つのファイルはそれぞれ実行結果が異なること
C:¥>1.exe
All Eindbazen are wearing wooden
………………
C:¥>5.exe
All Eindbazen are cheap bastards
② 5つのファイルはすべて同じMD5ハッシュとなること
$ md5sum 1.exe
656ed3d6b9b227856f7621666ce73081 1.exe
………………
$ md5sum 5.exe
656ed3d6b9b227856f7621666ce73081 5.exe
③ 5つのファイルはすべて異なるSHA1ハッシュとなること
$ sha1sum 1.exe
d36e8ae2ad1bc32d451e04d5ee28624017130336 1.exe
………………
$ sha1sum 5.exe
b8a596e0ecbfdf7d266697c0274b34075b2147e3 5.exe
ハッシュ値が衝突するMD5ファイルを5つ作成してください
![Page 92: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/92.jpg)
注意点
bin400用のサーバは用意してません
プロのexeこわい
作成したファイルは以下を確認してください
①実行結果
指定の出力となっていること
②md5結果
同じmd5ハッシュ値を出力すること
③ sha1結果
異なるsha1ハッシュ値を出力すること
92
今回の勉強会ではサーバを用意していないため、作成した5つのファイルの確認を上記手順で行ってください
![Page 93: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/93.jpg)
MD593
![Page 94: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/94.jpg)
MD5の構造94
Merkle-Damgård構造
SHA-1, SHA-2も同様の構造
内部状態𝐼𝑉 …
Hello, World
m1 m2 m3 pad
処理
R
処理
R
処理
R
処理
R
出力関数
e4d7f1b4ed2e42d15898f4b27b019da4
![Page 95: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/95.jpg)
MD5の構造95
Merkle-Damgård構造
SHA-1, SHA-2も同様の構造
内部状態𝐼𝑉 …
Hello, World
m1 m2 m3 pad
処理
R
処理
R
処理
R
処理
R
出力関数
e4d7f1b4ed2e42d15898f4b27b019da4
注目!
![Page 96: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/96.jpg)
MD5のラウンド処理96
メッセージを512bit(32bit*16)ごとに切り分け
512bitのブロックに対して64回処理を実施する
関数Fの処理は変化しますが、複雑になるため省略します
![Page 97: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/97.jpg)
MD5のラウンド処理97
𝐼𝑉 128bit(固定値)
A B C D32bit*4に分割
代入
m1
![Page 98: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/98.jpg)
MD5のラウンド処理98
𝐼𝑉
A B C D
m1[0]
512bitメッセージをさらに16個に分割
m1[15]m1[1] …
① F関数を通す②分割メッセージを足す③固定値Kを足す④ローテーションシフト
![Page 99: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/99.jpg)
MD5のラウンド処理99
𝐼𝑉
A B C D
m1[15]m1[1] …
m1[0]の出力を入力とし、m1[1]を用いて同様の処理を実施
![Page 100: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/100.jpg)
MD5のラウンド処理100
…
2巡目に突入!
m1[0] m1[15]m1[1] …
入力メッセージは1巡目と同じ
2巡目はF関数の処理が変更!
![Page 101: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/101.jpg)
101
…
…
…
…
![Page 102: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/102.jpg)
102
…
…
…
…
512bitのメッセージブロックに対し16回の処理を4巡実施
最後の出力をIHVと呼ぶ
![Page 103: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/103.jpg)
MD5の構造103
Merkle-Damgård構造
SHA-1, SHA-2も同様の構造
𝐼𝑉 …
Hello, World
m1 m2 pad
処理
R
処理
R
処理
R
出力関数
e4d7f1b4ed2e42d15898f4b27b019da4
1回の処理Rの説明
𝐼𝐻𝑉
注目!
![Page 104: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/104.jpg)
MD5のラウンド処理104
𝐼𝐻𝑉
A B C D
m2[15]m2[1]
…
…
2回目のラウンド処理からはIVではなくIHVが入力
![Page 105: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/105.jpg)
105
…
…
…
…
同様に16回の処理を4巡実施
![Page 106: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/106.jpg)
MD5の構造106
Merkle-Damgård構造
SHA-1, SHA-2も同様の構造
𝐼𝑉 …
Hello, World
m1 m2 pad
処理
R
処理
R
処理
R
出力関数
e4d7f1b4ed2e42d15898f4b27b019da4
𝐼𝐻𝑉 𝐼𝐻𝑉
padまで繰り返したIHVを出力
![Page 107: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/107.jpg)
伝えたかったこと
複雑な処理を暗記してほしいわけではなく
伝えたかったこと1
これ正攻法で解析は無理だな、という感覚
107
![Page 108: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/108.jpg)
伝えたかったこと
複雑な処理を暗記してほしいわけではなく
伝えたかったこと1
これ正攻法で解析は無理だな、という感覚
伝えたかった事2
#3#4の参加者の人たちはこう思うはず。
あれ?ハッシュ関数ってブロック暗号に似てない?
108
FEAL-4
![Page 109: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/109.jpg)
MD5の衝突109
![Page 110: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/110.jpg)
Wangの衝突攻撃110
2004年WangらによりMD5の衝突攻撃が報告
Crypto2004(暗号のトップカンファレンス)
正式な発表でなくランプセッションで発表
事前のePrintでみんな興味深々
一気に世界的なニュースに
無名の女性研究者が一晩で世界を変えた!
色んな裏話もあるらしい
Slashdot.も白熱 Schneier神も白熱
![Page 111: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/111.jpg)
MD5の衝突とは111
𝐼𝑉
m0
ℎ(𝑚)
ℎ(𝑚′)
処理
R𝐼𝐻𝑉
処理
R𝐼𝐻𝑉
処理
R
𝐼𝑉
m’0 m’1 m’2
処理
R𝐼𝐻𝑉
処理
R𝐼𝐻𝑉
処理
R
m1 m2
mとm’という2つの異なるメッセージを入力
h(m)とh(m’)が同じ値を出力
![Page 112: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/112.jpg)
MD5の衝突とは112
𝐼𝑉
m0
ℎ(𝑚)
ℎ(𝑚′)
処理
R𝐼𝐻𝑉
処理
R𝐼𝐻𝑉
処理
R
𝐼𝑉
m’0 m’1 m’2
処理
R𝐼𝐻𝑉
処理
R𝐼𝐻𝑉
処理
R
m1 m2
mとm’という2つの異なるメッセージを入力
h(m)とh(m’)が同じ値を出力
出力の「差分」
ΔH=h(m)-h(m’)=0と場合、衝突
![Page 113: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/113.jpg)
差分解析(#3#4でやったやつ)
入力情報ペアに差分を与えて、
出力ペアの差分を観測
[参考]FEALの差分解析
1.ラウンドごとの入出力差分解析
2.1を元に全体の入出力差分解析
この考え方をMD5に適用!
MD5の差分パスを見つけるなんてCTFでは出ない
研究レベルの難問
衝突探索の考え方だけ説明
113
![Page 114: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/114.jpg)
MD5の差分解析114
𝐼𝑉
m0 m1 m2
ℎ(𝑚)
ℎ(𝑚′)
処理
R𝐼𝐻𝑉
処理
R𝐼𝐻𝑉
処理
R
𝐼𝑉
m’0 m’1 m’2
処理
R𝐼𝐻𝑉′
処理
R𝐼𝐻𝑉′
処理
R
ΔH = h(m)-h(m’)ΔH0=IHV0-IHV0’ ΔH1=IHV1-IHV1’
![Page 115: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/115.jpg)
MD5の差分解析115
𝐼𝑉
m0 m1 m2
ℎ(𝑚)
ℎ(𝑚′)
処理
R𝐼𝐻𝑉
処理
R𝐼𝐻𝑉
処理
R
𝐼𝑉
m’0 m’1 m’2
処理
R𝐼𝐻𝑉′
処理
R𝐼𝐻𝑉′
処理
R
ΔH = h(m)-h(m’)ΔH0=IHV0-IHV0’ ΔH1=IHV1-IHV1’
ΔH0を打ち消すようなΔH1を発生させる
![Page 116: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/116.jpg)
MD5の差分解析116
𝐼𝑉
m0 m1 m2
ℎ(𝑚)
ℎ(𝑚′)
処理
R𝐼𝐻𝑉
処理
R𝐼𝐻𝑉
処理
R
𝐼𝑉
m’0 m’1 m’2
処理
R𝐼𝐻𝑉′
処理
R𝐼𝐻𝑉′
処理
R
ΔH = h(m)-h(m’)ΔH0=IHV0-IHV0’ ΔH1=IHV1-IHV1’
ΔH0を打ち消すようなΔH1を発生させる
IHVとIHV’が同じ値となる
![Page 117: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/117.jpg)
MD5の差分解析117
𝐼𝑉
m0 m1 m2
ℎ(𝑚)
ℎ(𝑚′)
処理
R𝐼𝐻𝑉
処理
R𝐼𝐻𝑉
処理
R
𝐼𝑉
m’0 m’1 m’2
処理
R𝐼𝐻𝑉′
処理
R𝐼𝐻𝑉′
処理
R
ΔH = h(m)-h(m’)ΔH0=IHV0-IHV0’ ΔH1=IHV1-IHV1’
ΔH0を打ち消すようなΔH1を発生させる
IHVとIHV’が同じ値となる
以降のmとm’が同じであればh(m)とh(m’)は
衝突
![Page 118: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/118.jpg)
Wangの攻撃
ΔH0を打ち消すΔH1を出力する入力ペアを効率よく探索する手法を提案
Wangの発表のあとMD5に対する攻撃が活発化
Klimaや佐々木らによりさらに高速化
数秒で衝突探索できるまでに発展
118
[1] How to break MD5 and other hash functions, Xiaoyun Wang et al., http://merlot.usc.edu/csac-f06/papers/Wang05a.pdf
[3] On collisions for MD5, M. Stevens, http://www.win.tue.nl/hashclash/On%20Collisions%20for%20MD5%20-%20M.M.J.%20Stevens.pdf
[2] Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications, V. Klima, http://eprint.iacr.org/2005/102.pdf
![Page 119: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/119.jpg)
Wangの攻撃
ΔH0を打ち消すΔH1を出力する入力ペアを効率よく探索する手法を提案
Wangの発表のあとMD5に対する攻撃が活発化
Klimaや佐々木らによりさらに高速化
数秒で衝突探索できるまでに発展
119
[1] How to break MD5 and other hash functions, Xiaoyun Wang et al., http://merlot.usc.edu/csac-f06/papers/Wang05a.pdf
[3] On collisions for MD5, M. Stevens, http://www.win.tue.nl/hashclash/On%20Collisions%20for%20MD5%20-%20M.M.J.%20Stevens.pdf
[2] Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications, V. Klima, http://eprint.iacr.org/2005/102.pdf
自分で「差分パス」を発見するのは難しい→ 先人の知恵に頼る
![Page 120: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/120.jpg)
FastColl
あるメッセージから同じハッシュ値を出力する2つのメッセージを出力するツール
Wangの攻撃を改良したFast Collision Attackを実装
下記URLからダウンロード可能
https://marc-stevens.nl/research/software/download.php?fastcoll_v1.0.0.5-1_source.zip
ビルド手順
# apt-get install libboost-all-dev
# apt-get install lib32z1-dev
# apt-get install libbz2-dev
# g++ *.cpp *.hpp -lboost_program_options -lboost_filesystem -lboost_system
120
![Page 121: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/121.jpg)
FastCollをやってみた121
2つのバイナリを出力
同一のMD5出力
異なるSHA1出力
超簡単にMD5の衝突メッセージをGET
![Page 122: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/122.jpg)
FastCollをやってみた122
1024bit(512bit*2)を末尾に付加して、MD5の値を衝突させている
元ファイル
FastColl
![Page 123: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/123.jpg)
Chosen Prefix Collision
MD5の衝突攻撃:あるメッセージと衝突するメッセージを探索
Chosen Prefix Collison:任意の2つのメッセージを衝突させられる接尾メッセージを探索
異なる12個の任意のPDFのハッシュ値を衝突
PS3を用いて2日間で実施
123
Hello, World!
Goodbye, World!
a3hae,3x
esd7dh0s+
+
ekah397hal..
suffixを探索!
![Page 124: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/124.jpg)
Hash Crash Chosen Prefix Collision 用のツール
CUDA環境が必要
下記URLで公開
https://marc-stevens.nl/p/hashclash/
124
![Page 125: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/125.jpg)
[再掲]md5colliding125
下記条件を満たすPE32形式のファイルを5つ作成
① 5つのファイルはそれぞれ実行結果が異なること
C:¥>1.exe
All Eindbazen are wearing wooden
………………
C:¥>5.exe
All Eindbazen are cheap bastards
② 5つのファイルはすべて同じMD5ハッシュとなること
$ md5sum 1.exe
656ed3d6b9b227856f7621666ce73081 1.exe
………………
$ md5sum 5.exe
656ed3d6b9b227856f7621666ce73081 5.exe
③ 5つのファイルはすべて異なるSHA1ハッシュとなること
$ sha1sum 1.exe
d36e8ae2ad1bc32d451e04d5ee28624017130336 1.exe
………………
$ sha1sum 5.exe
b8a596e0ecbfdf7d266697c0274b34075b2147e3 5.exe
![Page 126: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/126.jpg)
方針126
方針1:Chosen Prefix Attackを利用
① 5つのPE32バイナリを作成
②それぞれにChosen Prefix Attackを利用しハッシュ値をそろえる
時間がかかる。CTF期間中にできる?
方針2:FastCollを利用
① 5つの出力をする1つのバイナリを作成
② FastCollを利用し衝突するメッセージを導出
③衝突メッセージを5つに増やす
5つの出力?
衝突メッセージを増やす?
![Page 127: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/127.jpg)
実習
とりあえずやってみましょう
(さっきと同じ)解けた人はおまけをやってみてください
Plaid CTF 2014 – Parlor
nc katagaitai.orz.hm 4321 (or 14321, 24321, 34321)
もっと難しい衝突問題がやりたい人
HITCON CTF 2014 – wtf6
サーバ準備してないけど問題は下記からDL可能
https://github.com/ctfs/write-ups-2014/tree/master/hitcon-ctf-2014/wtf6
質問、要望、音楽のリクエストなど→ #katagaitaiCTF
40分127
![Page 128: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/128.jpg)
FAQ
Q1. PE32バイナリの入手方法は?
A1.1. Visual Studioでexeファイルを作るとか
A1.2 mingw32で頑張る
インストール&使い方(Ubuntu 14.04 LTS)
# sudo apt-get install mingw32
# i586-mingw32msvc-gcc test.c
Q2. FastCollがビルドできない
A2. boostが必要。数ページ前を参考に。
128
![Page 129: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/129.jpg)
解答(FastColl)129
① 5つの出力をする1つのバイナリを作成
② FastCollを利用し衝突するメッセージを導出
③衝突メッセージを5つに増やす
![Page 130: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/130.jpg)
解答(5つの出力)130
![Page 131: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/131.jpg)
解答(5つの出力)
ハッシュに関係ないパラメータ(ファイル名など)で出力を変更するコードを生成
例)自身のファイル名で出力を変更
同じバイナリでもファイル名が変わると出力が変わる
131
![Page 132: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/132.jpg)
解答(5つの出力)
ファイル名を変更して実行すると出力が変わる
もちろん現状では同じMD5、SHA1を出力する
132
![Page 133: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/133.jpg)
解答(衝突ペアの生成)
FastCollを利用し衝突ペアを生成
MD5で衝突を起こし、SHA1ペアは異なるメッセージペア
133
2つのバイナリを出力
同一のMD5出力
異なるSHA1出力
![Page 134: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/134.jpg)
解答(衝突ペアの生成)
衝突ペアのファイル名をそれぞれ変更し実行
元データと同様の出力
PE32形式は末尾に不要データが付与されても無視
134
条件を満たす2つのメッセージを手に入れた
![Page 135: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/135.jpg)
解答(衝突ペアの増加) FASTCOLLによりm2, m’2が付与されたと仮定
下記メッセージが衝突
md5[m1 m2]
md5[m1 m’2]
135
m1
R
m2
R
m’2
R
![Page 136: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/136.jpg)
解答(衝突ペアの増加) さらに[m1 m2]にFASTCOLLによりm3, m’3が付与されたと仮定
下記メッセージが衝突
md5[m1 m2 m3]
md5[m1 m’2 m’3]
136
m1
R
m2
R
m’2
R
m3
R
m’3
R
![Page 137: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/137.jpg)
解答(衝突ペアの増加) さらに[m1 m2]にFASTCOLLによりm3, m’3が付与されたと仮定
下記メッセージが衝突
md5[m1 m2 m3]
md5[m1 m’2 m’3]
137
m1
R
m2
R
m’2
R
m3
R
m’3
R
[m1 m’2]にm3, m’3を付与
m3
R
m’3
R
![Page 138: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/138.jpg)
解答(衝突ペアの増加) さらに[m1 m2]にFASTCOLLによりm3, m’3が付与されたと仮定
下記メッセージが衝突
md5[m1 m2 m3]
md5[m1 m’2 m’3]
138
m1
R
m2
R
m’2
R
m3
R
m’3
R
[m1 m’2]にm3, m’3を付与
m3
R
m’3
R
下記4メッセージが衝突
md5[m1 m2 m3]md5[m1 m2 m’3]md5[m1 m’2 m3]md5[m1 m’2 m’3]
→ 倍々ゲームで衝突メッセージを増殖可能
![Page 139: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/139.jpg)
解答(衝突ペアの増加)139
1_msg1.exe = 1.exe+m2
1_msg2.exe = 1.exe+m’2
1.exe
R
m2
R
m’2
R
![Page 140: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/140.jpg)
解答(衝突ペアの増加)
1_msg1.exeからさらに衝突ペアを導出
140
![Page 141: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/141.jpg)
解答(衝突ペアの増加)141
1_msg1_msg1.exe = 1.exe+m2+m3
1_msg1_msg2.exe = 1.exe+m2+m’3
1.exe
R
m2
R
m’2
R
m3
R
m’3
R
![Page 142: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/142.jpg)
解答(衝突ペアの増加)
付与されたデータ部分を抽出
data1 = m3
data2 = m’3
それぞれ1_msg2.exeに連結する
142
![Page 143: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/143.jpg)
解答(衝突ペアの増加)143
1_msg1_msg1.exe = 1.exe+m2+m3
1_msg1_msg2.exe = 1.exe+m2+m’3
1_msg2_msg1.exe = 1.exe+m’2+m3
1_msg2_msg2.exe = 1.exe+m’2+m’3
m1
R
m2
R
m’2
R
m3
R
m’3
R
m3
R
m’3
R
![Page 144: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/144.jpg)
解答(衝突ペアの増加)
下記の特性を持つ4つのメッセージを導出
MD5ハッシュはすべて衝突
SHA1ハッシュはすべて異なる
144
メッセージを5個まで増やして、それぞれのファイル名を変更すればOK
![Page 145: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/145.jpg)
参考文献
[1] How to break MD5 and other hash functions, Xiaoyun Wang et al., http://merlot.usc.edu/csac-f06/papers/Wang05a.pdf
[2] Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications, V. Klima, http://eprint.iacr.org/2005/102.pdf
[3] On collisions for MD5, M. Stevens, http://www.win.tue.nl/hashclash/On%20Collisions%20for%20MD5%20-%20M.M.J.%20Stevens.pdf
[4] Free Start Collision for full SHA-1, M. Stevens et al., https://marc-stevens.nl/research/papers/KPS_freestart80.pdf
[5] The Keccak sponge function family, Guido Bertoni et al., http://keccak.noekeon.org/specs_summary.html
[5] 新版暗号技術入門秘密の国のアリス, 結城浩
[6] 暗号技術大全, Bruce Schneier
145
![Page 146: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/146.jpg)
Writeups & Implressions146
![Page 147: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/147.jpg)
147
katagaitai勉強会#5の開催後に見つけたcryptoのwriteupや感想です。
漏れがあれば、連絡いただけると嬉しいです。
Parlor編
https://gist.github.com/icchyr/e07035fd52289ab491dbd71910af1467
icchyrさんによるwriteup。C++すげー。
http://www.slideshare.net/sonickun/katagaitai-ctf-5-med-parlor-plaid-ctf-2014
y_hag(Sonickun)さんによるwriteup。丁寧でこの勉強会資料が不要な勢い。
http://haberd4shery.tumblr.com/post/149744686783/katagaitai-ctf勉強会-感想など
haberd4sheryさんによるwriteup。宿題の提出ありがとうございます。
https://gist.github.com/Charo-IT/7d7281e56dfc66e0c5b0e6643267c9a6
Charo_ITさんによるwriteup。Cとrubyの組み合わせ一本。
#5 Writeups & Impressions
![Page 148: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/148.jpg)
148
katagaitai勉強会#5の開催後に見つけたcryptoのwriteupや感想です。
漏れがあれば、連絡いただけると嬉しいです。
hashme&MD5colliding編
https://gist.github.com/inaz2/4128aa4bbda194ea98d3d18ddafa8a39
inaz2さんによるwriteup。よくブログ見てます。
https://gist.github.com/elliptic-shiho/242fb0bda5d8cead20a05fe1f36b9868
elliptic-shihoさんによるwriteup。よくtwitter見てます。
https://gist.github.com/icchyr/63ead572d4e1ba7e12b493b2f4b3087a
icchyrさんによるwriteup。main()で処理するところがicchyさんらしさですかね。ごめんなさい、適当に言いました。
https://gist.github.com/Charo-IT/61903c3ad41928a99705bc6b6222796d
Charo_ITさんによるwriteup。Rubyです。さすが。
http://ydfj.blogspot.jp/2016/08/katagaitaictf5-med.html?spref=tw
Theoldmoon0602(ふるつき)さんによるwriteup&感想。Pwntoolすごいですよね。あと解説を書いてくれるのが助かります。Parlorも頑張ってください。
#5 Writeups & Impressions
![Page 149: katagaitai CTF勉強会 #5 Crypto](https://reader035.fdocument.pub/reader035/viewer/2022081505/587151f61a28ab8e5b8b4627/html5/thumbnails/149.jpg)
149
katagaitai勉強会#5の開催後に見つけたcryptoのwriteupや感想です。
漏れがあれば、連絡いただけると嬉しいです。
hashme&MD5colliding編
http://fish.minidns.net/news/78
Kanataさんの感想。暗号の世界は一部の偉人(神)で回っているのです。そして余談スライドは消したので当日の参加者限定です。
http://hama.hatenadiary.jp/entry/2016/07/21/211211
hamaさんの感想。院試終わったらParlorをお願いします。
http://turn-up.hatenablog.com/entry/2016/07/17/225522
Turn_upさんのwriteup&感想。Koshigaitaすぎですね。
https://kimiyuki.net/blog/2016/08/28/hack-you-2014-hashme/
https://kimiyuki.net/blog/2016/08/28/ebctf-2013-md5colliding/
ki6o4さんによるwriteup。数式で書いてくれてますねー。でもちょっと怪しい?
http://kotamanegi.hatenablog.com/entry/2016/08/30/235201
こたまねぎさんによる感想。ぜひParlorも取り組んでみてください。
#5 Writeups & Impressions