Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Padding Oracle Attack
Search
zhouyunao
June 14, 2019
Technology
590
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Padding Oracle Attack
zhouyunao
June 14, 2019
More Decks by zhouyunao
See All by zhouyunao
knock
zhouyunao
0
43
Other Decks in Technology
See All in Technology
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
1.4k
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
290
プライバシー保護の理論と実践
lycorptech_jp
PRO
1
250
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
3.8k
FinOps X 2026 Recap from Engineer Side #JapanFinOps
chacco38
0
260
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
1
130
20260702_生成AIはどこまで成長するのか_チャットだけじゃない世界
doradora09
PRO
0
110
Road to SRE NEXTの今までとこれから
hiroyaonoe
0
190
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
150
認証認可だけじゃない! ID管理の構成要素と ライフサイクルを意識しよう
ritou
1
520
CIで使うClaude
iwatatomoya
0
150
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
0
3.1k
Featured
See All Featured
Scaling GitHub
holman
464
140k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
180
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
410
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
460
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
How to make the Groovebox
asonas
2
2.3k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
210
Deep Space Network (abreviated)
tonyrice
0
220
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
The Curious Case for Waylosing
cassininazir
1
430
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
Transcript
Padding Oracle with INSHACK 2019 jean bash picoctf2018 Magic padding
oracle 2019/6/14 m1z0r3 @Zhouyunao
⽬次 n Padding Oracle Attack l Encryption Attack l Decryption
Attack n 実践問題 2019/6/13 m1z0r3
n 概略 l 共通鍵ブロック暗号のCBCモードに対する攻撃⼿法 l 14年SSL3.0のPOODLEという脆弱性もこの⼿法 n CTFに置いての位置付け l ちょくちょく⾒る
l 初⾒としはうざい 2019/6/13 m1z0r3 Padding Oracle Attack
n 特徴 (あくまでも⾃分経験上の話) l CBCモード ←必須 l AES類のブロック暗号 ←必須 l
サーバーが復号化をやってくれる l サーバーコードは⼤概公開 l IVまでこっちから送られる ←場合によって 2019/6/13 m1z0r3 Padding Oracle Attack
n 何ができる︖ l Decryption Attack 難易度:⾼ 暗号⽂の復号ができる 平⽂はflagの場合 l Encryption
Attack 難易度:中 暗号⽂の改造による平⽂の改ざん 平⽂を特定なコマンド/データに改ざんし認証をバイパスできる 2019/6/13 m1z0r3 Padding Oracle Attack
n イメージ 2019/6/13 m1z0r3 Encryption Attack # a&…86 % +
+ + # ) user…
n イメージ 2019/6/13 m1z0r3 Encryption Attack # 01…8c % +
+ + # ) admin…
n 本来なら ) ⨁ 2 = ” … ” n
平⽂をすり替える為に差を計算 = “ … ”⨁” … ” n 差と⼀個前のブロックとxor )⨁⨁(%) = “ … ” 2019/6/13 m1z0r3 Encryption Attack
n それをサーバーに送ると 2019/6/13 m1z0r3 Encryption Attack # 01…8c % +
+ + # xxxxx admin… 最後のブロックを変える為に前のブロックを犠牲にする ※全ブロックを弄る⽅法もあります(後ほど説明)
n さらなる特徴(経験上) l PKCS7を使いがち l Padding errorの時のエラー⽂が特殊 n どうやる︖ 簡単にいうと
前のブロックをいじって、違うpaddingの形式に復号させ、 求めたいブロック平⽂⼀歩⼿前のDec(ct)を求めて、平⽂を取り 出す 2019/6/13 m1z0r3 Decryption Attack
2019/6/13 m1z0r3 Decryption Attack 1c a d m i n
u s e r 07 07 07 07 07 07 01 xx + + Dec Dec + xxxxx ) ブルートフォース ※適当に埋めた
2019/6/13 m1z0r3 Decryption Attack 2f 1c a d m i
n u s e r 07 07 07 07 07 02 02 yy xx 01 02 Dec + ) + Dec xxxxx + + + 01 ブルートフォース済み の部分を新しいpadding 形式に合わせる
2019/6/13 m1z0r3 Decryption Attack 3e 2f 1c a d m
i n u s e r 07 07 07 07 03 03 03 zz yy xx 02 01 03 03 + + + + Dec xxxxx Dec + )
2019/6/13 m1z0r3 Decryption Attack 4a 3e 2f 1c a d
m i n u s e r 07 07 07 04 04 04 04 aa zz yy xx 03 02 01 04 04 04 + + + + Dec xxxxx Dec + )
オ ラ ク ル 。 。 。 2019/6/13 m1z0r3 Decryption
Attack
2019/6/13 m1z0r3 Decryption Attack gy f1 ez dx cp bk
ag 9l 8i 7u 6n 5b 4a 3e 2f 1c 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 qq zz cc vv ee nn ll hh gg bb ee ff aa zz yy xx 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 + + + + Dec xxxxx Dec + ) 全部¥x10になる為既知明⽂か らDec(ct1)を計算して最後ct0と xor取り最後のブロックを算出
2019/6/13 m1z0r3 Decryption Attack gy f1 ez dx cp bk
ag 9l 8i 7u 6n 5b 4a 3e 2f 1c 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 qq zz cc vv ee nn ll hh gg bb ee ff aa zz yy xx 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 + + + + Dec xxxxx Dec + ) ′# ′) ′# ′) が10(padding)に埋め 尽くされた時: ′# ⨁ 1010. . = () ) () )⨁ # = )
2019/6/13 m1z0r3 全ブロックのEncryption Attack # 01…8c % + + +
# xxxxx user… + # admin… n Step 1 最後の2ブロックから差分を計算
n Step 2 前の2ブロックに移動 2019/6/13 m1z0r3 全ブロックのEncryption Attack xxxx 01…8c
% + + + # xxxxx user… + # admin… + ) I am…
n Step 3 2019/6/13 m1z0r3 全ブロックのEncryption Attack xxxx 01…8c %
+ + + # xxxxx user… + # admin… + ) I am… + % Yes… 最後は1ブロック⽬を すりかえられるよう に差分を計算
n picoctf 2018 magic padding oracle l De+Encryption Attack l
https://kusuwada.hatenablog.com/entry/2019/04/17/052525 n INS’hack 2019 Jean-Sébastien Bash l Encryption Attack l https://www.hackademint.org/Jean-Sebastien_Bash 2019/6/13 m1z0r3 実践問題
n http://rintaro.hateblo.jp/entry/2017/12/31/174327 2019/6/13 m1z0r3 レファレンス