📘
Web CTF 攻撃方法まとめ
言語別
javascript/Typescript(共通)
- parseIntの仕様を利用したWAF回避
- prototype pollution (keyに対するチェックのバイパス)
- yaml-Typescript polyglot
- URLの挙動
- Py2Js Jail
-
String.prototype.replace
が一度しか置換しない
Nodejs/Typescript(サーバー)
- Dynamic Importを利用したWAF回避
- デバッガーの利用
- CVE-2024-21891
- process.binding
python
- Class injection
-
nan > 0 == false
、nan <= 0 == false
- pickle
PHP
- ディレクトリトラバーサル + Sessionファイルの利用
- assertを利用したLFI
- PHP-FPMが
admin.php/.php
をadmin.php
と解釈する -
@fopen("ftp://")
のproxy
オプションのCRLFインジェクション
Rust
- BatBadBut
Prolog
- application/x-prolog
Go
-
template
のSSTI
テンプレートエンジン
Reactjs
- Hooksの実行順序に関するバグ
-
is
パラメータを利用して、custom elementと誤認させる
Flask/Jinja
- Jinja InjectionからRCE
-
{{config}}
から情報取得
Smarty
Drogon
- CSPファイルのWAF回避
Pug
データベース
SQL全般
- ハッシュされた値によるインジェクション
MongoDB
- 文字列の
$gte
を利用したWAF回避 - ObjectIDの推定
MySQL
- Type juggling
- TEXTが65535文字で切り落とされる
フレームワーク
Nextjs
- CVE-2024-34351によるSSRF
-
_buildManifest.js
を利用したルートの列挙
Bunjs
- BunシェルによるRCE
- Bun.fileがヌル文字でファイル名を途切れさせる
- Bunのクラッシュ
- Bun.serveのHostの挙動
- Jail
Sinatra
- Sinatraの500番台レスポンス
Closure
- goog.uri.utils.Uri.parseの仕様
Hono
- Hostの挙動
Genie
- テストファイルのインクルード
Express
- staticファイルのリダイレクト
HTMLサニタイザ/パーサー
DOMPurify
- 3.1.7のbypass
htmlparser2
-
<xmp>
の中身がテキストとして認識されない
その他ライブラリ/フレームワーク/アプリケーション
Electron
-
contextIsolation: false
を利用したRCE
nginx
- Request splitting
-
^(.*)$
が%0a%0d
にマッチしない
Osquery
-
curl
のCRLFインジェクション
ujson
- Unicodeのパースの仕様
ブラウザ仕様
Google Chrome
Chromeアプリ
- Chromeアプリで利用されるファイルを取り出す問題
Chrome Extension
-
tab.pendingUrl
を利用したOriginの偽装 - ファイル探索/LFI
Shadow DOM
- リダイレクト+
window.frameElement.src
を用いたURLの取得
Object fallback
CSS Injection
- Input要素の中身を取得する
- View Transitoin API
-
@font-face
とunicode-range
によるタグ内に利用された文字の特定
CSP
- metaリダイレクト
- CDN + AngularJS
- Nonceハッシュの取得・変更
Content Type
-
,
による複数列挙
DOM Clobbering
その他XXS
- ISO-2022-JPを利用したエスケープ回避
- エンコーディングの決定が最初のパケットのみで行われる
- 空白禁止bypass
- Markdownパーサ
- mXSS
その他XS-Leak
- 親ウィンドウをリダイレクトさせることによる、ユーザーの偽装
- 長過ぎるURLでエラーを発生させる
- IDアトリビュート
その他
File URI Scheme
-
file://localhost/
の記法
認証
- 時間サーバーの偽装
- Hash Length Extension Attack
- CBC Bit-flipping Attack
JWT
- Algorithm confusion attack
- HS256で同じSSLと同じ公開鍵を使ったパターン
正規表現
SSRF
- Open Redirect + hostnameの偽装
CSRF
- SPAのAPIを利用する
- rcloneのCSRF
XEE
LLM
- LLMを利用したWAF + Prompt Injection
Race condition
- Imaginary CTF 2024 - The Amazing Race
- ファイル生成から削除までにアクセスする
Blind search
- Command Injection + Blind search
圧縮ファイル
- Zip slip
クラウド
- aws s3の設定ミス
Discussion