20240929 seccon beginners


PwCアソシエイト

社会、一般、インフラの保護が第一優先

web問題

xssは1つ以上の問題で扱われる
hackerone.comのレポートでもバグバウンディで1位、ペネトレで2位

Socket、プロセス/
2つの命令を実行

Webアプリケーションサーバー

DBMSを利用してWebアプリケーションのデータを永続化
RDBMS/SQL
NoSQL キーバリューストア

HTML/CSS/JavaScriptの処理
js DOM

ログイン機能
Cookieとセッションを用いて実現
Set-Cookie: <キー>:<値>
セッションID randam

XSS
img src=x onerror=alert(1)
input type = 

反射型XSS
蓄積型XSS
DOM-Based XSSさっきのサーバー側の問題ではなく、ブラウザ側の問題で起こる
<example.com>

サーバー側に欲しい情報はあるはずだが、クライアント側に情報はあるのか?
クライアント側からcookie情報を抜き出せれば被害者と同じような挙動を実現できる

document.cookie

で抜き出せる

対策
エスケープ 置き換え

crypto問題

盗聴
2017 ROCA攻撃
RSA暗号のセットの脆弱性

暗号の歴史
1936 チューリングマシン、エニグマ暗号の解読
1960 ARPANET(最初は論文共有していたインターネット)
1973 RSA、楕円曲線、公開鍵暗号、ディフィーヘルマン鍵共有(企業参入、暗号開発、平穏な時代)
2013 スノーデンNSAの内部告発(勝手に復号されている)、Dual EC DRBG、RSAの静寂性の発見、TLS 1.3
爾後 大量子暗号、Web 3.0(格子暗号)

SECCONではRSA暗号が多いが、最近は多項式暗号とか、使わなさそうなRSA暗号

10 = 2*5、偶数
4は偶数、何をかけても1(奇数)にならない
「4と10の最大公約数が1ではない」から、0除算になる
偶数だと0除算になるから解なし

getPrime(512)
512bitの素数

小さい場合はfactorDBというサイトを使うとよい

gcd(N, s) = p
大きな問題を小さく分割(中国剰余定理)
LLL(格子基底簡約) 格子暗号の街道に使われていたものをRSA暗号に適用することで攻撃のはあがぐっと日がる
・秘密鍵がすこし漏れるだけで攻撃できたり(半分のbitで解読可能)
・情報を集めることで曖昧な探索をすることが出来る
・よりキツい条件でも解けるようになる
これができればSECCON予選突破レベル

緑が良い基底、赤が悪い基底
何倍か足し合わせていくと、点が生成される
点が生成される中で角度が狭くて長い悪い基底にしてやれば難しくできる

演習ではgcd(N, s) = pが出るかもなぁ

演習(15:45~)

factorDBで160759399599518412605654921670177924241453562887877087316537432586323893639594143238367085987879281660930421368715210676712112768885147381896542652469721081067009811110209353412569084585901638247216514600659241592835561614933552584683251330939468785263796601318328054998014161539529418630244506002332576756553
を素因数分解
p = ?
q = ?
n = p*q
n
phi = (p-1) * (q-1)
d = pow(e, -1, phi)
e = 65537
c = ?
d = pow(c, e, n)
long_to_tytes(pow(c, d, n))

q = n // p
phi = (p-1)*(q-1)
e = ?
d = pow(e, -1, phi)
long_to_bytes(pow(c, d, n))
n = p*qなので、
rは継続してpの倍数
∴
import math
math.gcd(?) = p
n = ?
q = n // p
phi =(p-1) * (q-1)
e = 0x10001
d = pow(e, -1, phi)
long_to_bytes(pow(c, d, n))
最大公約数を取ることで素因数分解できるように


この記事が気に入ったらサポートをしてみませんか?