CTFのWeb分野まとめ
Cross-Site Scripting(XSS)
SQL Injection
CSS Injection
Remote Code Execution(RCE)
Cross-Site Request Forgeries(CSRF)
Server-Side Template Injection(SSTI)
Server-Side Includes (SSI) Injection
Server-Side Request Forgery(SSRF)
XML External Entity(XXE)
Directory Traversal
Cache Poisoning
Insecure Deserialization
PHP Generic Gadget Chains
Regular expression Denial of Service(ReDoS)
Side Channel Attack
アクセス制御の不備
polyglot
言語仕様系
文字入力チェックのバイパス
Tools
tips
RSA暗号
RSA暗号とは
1977年にリベスト(Rivest)、シャミア(Shamir)、エーデルマン(Adleman)が提唱した。公開鍵暗号の1つ。
RSA暗号を理解するための数学知識
最大公約数 ユークリッドの互除法 拡張ユークリッドの互除法 整数の合同 合同式の逆元 既約剰余類 オイラー関数 フェルマーの小定理
CTFから見たRSA暗号への攻撃方法
Wiener's Attack
eの値が大きい時に成立
Boneh-Durfee's low private exponent Attack
eの値が小さい時に成立
weak rsa
Common Modulus Attack
同一の平文を異なるeで暗号化した暗号文があるときに成立。
Common Private Exponent Attack
Franklin-Reiter Related Message Attack
暗号文c1、c2を持ち、それに対する平文がm1、m2の上位ビットが共通するとき成立。
このとき
m2=a*m1 + b が分かり、・・・
Coppersmith's Attack
素数pの上位ビットまたは下位ビットが分かる時に成立。
秘密鍵dの下位ビットが分かるとき成立。
平文mの上位ビットまたは下位ビットが分かる時に成立。
Coppersmith's short pad Attack
Partial-key exposure Attack / High-bit known Attack
Haste'd Broadcast Attack
同一の平文を異なるnで暗号化した暗号文があるときに成立。中国人剰余定理を用いることで平文mが求まる。
LSB Decryption Oracle Attack
任意の暗号文を復号した結果の偶奇(下位1bit)が分かるときに成立。
mの偶奇が分かるので、二分探索によってmが求まる。
RSA暗号における各値の一般的な値
e=65537(0x10001) or 3
これはバイナリ・ユークリッドの互除法を用いて高速化しやすいために選ばれている。
N
2048ビット以上。512ビットぐらいだとECMを利用して1分程度で素因数分解できるらしい。
Tool
pythonの各種モジュール
factordb.com
素数のデータベース(素因数分解してくれる!)
http://www.factordb.com/
参考文献
暗号技術のすべて:IPUSIRON(著)
暗号技術入門:結城浩(著)
「CTF Crypto」
https://raintrees.net/projects/a-painter-and-a-black-cat/wiki/CTF_Crypto#RSA%E6%9A%97%E5%8F%B7
公開鍵暗号
公開鍵暗号とは
秘密鍵を事前に共有する必要ない暗号。このため通信先が誰であっても暗号化を行える。これが最大のメリット。
暗号化するには、相手が公開している鍵を使用して行う。その後、その暗号を相手が持つ秘密鍵で復号化する。
公開鍵が満たす性質
正当性
秘匿性
公開鍵暗号に対する攻撃
公開鍵のすり替え
そもそも通信先が盗聴者になれば、復号化も容易である。なので通信内容の送信先を変えてしまうことを用いた攻撃。
この攻撃の対策として、公開鍵暗号基盤(PKI)と呼ばれるユーザーのに対応する公開鍵であることを保証する証明書を発行する機関がある。これにより、公開鍵の正当性が検証できる。
全数探索攻撃
公開鍵暗号は、その性質上鍵となる可能性のある数kが2^kより少なくなるので、有効な場合が存在する。例えば、RSA暗号では、公開鍵Nの素因数p,kが秘密鍵となる。そのためp,kは素数という条件がある。また現実的には、p,kは十分大きな数でなくてはならないので、該当する素数はより少なくなる。
参考文献
暗号技術のすべて:IPUSIRON(著)
暗号技術入門:結城浩(著)
Merkle-Damgard構造
Merkle-Damgard構造とは
ハッシュ関数でハッシュ値を生成する際に用いられる構造。いくつかの固定長のハッシュ値を結合して、より大きな固定長を出力する。SHA-1/SHA-2 familyや MD4/MD5で利用されている。
わかりやすいスライド
https://www.slideshare.net/trmr105/katagaitai-ctf-5-crypto
スライドP35 参照
CTFとして
length-extension(レングスエクステンション)攻撃やgenerate-and-paste(ジェネレート・アンド・ペースト)攻撃が可能
参考文献
ブログ構成のテンプレ
***とは
tool
関連したctf
参考文献
シーザー暗号
シーザー暗号とは
すでにわかりやすい解説があるので、そちらを参照してください。
https://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%BC%E3%82%B6%E3%83%BC%E6%9A%97%E5%8F%B7
tool
・様々な暗号化・復号化を行える神ツール
「CyberChef」: https://gchq.github.io/CyberChef/
・特化した物
関連したctf
https://ctf.cpaw.site/questions.php?qnum=6
参考文献
暗号技術のすべて:IPUSIRON(著)
暗号技術入門:結城浩(著)