Webアプリケーションの主要なセキュリティ脅威と防御戦略
クロスサイトスクリプティング(XSS)
XSSは、悪意のあるスクリプトをWebページに埋め込み、閲覧者のブラウザ上で実行させる攻撃手法である。ユーザーのセッション情報の窃取や、不正な操作の実行などを引き起こす。
反射型XSS(非持続型)
攻撃者が仕掛けた悪意のあるURLをユーザーが開くことで発動する。URLのパラメータから直接スクリプトが読み込まれ、レンダリングさ ...
8月2日 08:02 投稿
VNCTF 2025 ウェブ問題解説
Web3ではパスワードのパススルーとJWTの偽造によりサンドボックスを突破しシェルを取得したが、権限昇格が残っていた。数日間の疲労から時間切れとなり、朝に環境変数の昇格策を思いついたが間に合わず。最終的にウェブ部門で第10位となり、同順位中唯一3問のみ正解という結果となった。
「Nailong Home」
初血を獲得した問題。最も簡単だったはずだが、JavaGuideが燃え尽 ...
7月31日 04:22 投稿
SQLインジェクションのメカニズムとコード解析(後編)
概要
前回の記事では、UNIONインジェクションやエラーベースインジェクション、ブールブラインドインジェクションについて解説しました。今回はそれに続き、スタック型インジェクション、ワイドキャラクタインジェクション、Cookie経由のインジェクション、およびX-Forwarded-For(XFF)ヘッダーを利用した攻撃手法について詳細に分析します。
SQLインジェクションの発生 ...
7月26日 21:12 投稿
SQLインジェクションの実践的手法
基本的なSQLインジェクション手法
URL: http://localhost/sqli-labs/Less-1/
テスト手順
正常なレスポンス(数値型インジェクションではない)
http://localhost/sqli-labs/Less-1/?id=1
エラーレスポンス(文字列型インジェクション)
http://localhost/sqli-labs/Less-1/?id=1'
シングルクォートによる閉鎖
http://localhost/sqli-labs/Less-1/?id=1' or '1'='1
カ ...
7月21日 21:37 投稿
SQLインジェクションのリスクと対策
SQLインジェクションのリスク
SQLインジェクションの定義
SQLインジェクションのリスク確認
ユーザーログインシミュレーション
通常のログイン: SELECT * FROM userinfo WHERE name = 'カイガ318' AND pwd = 666;
注入攻撃: SELECT * FROM userinfo WHERE name = 'カイガ318';-- AND pwd = 'パスワードです';
アカウントを知らなくても攻撃可能: SELECT * FROM userinfo W ...
7月16日 21:07 投稿
Webセキュリティ実践ガイド:脆弱性対策の核心技術
URLエンコード処理の実装メカニズム
URLエンコードは特殊文字を安全に伝送するための標準手法です。特定の文字は%記号に続く16進数値に変換され、パーサーが誤解釈するのを防ぎます。例えば?role=userを直接使用すると脆弱性が発生する可能性があります。
実際のケースでは、aを%61にエンコードしますが、ブラウザが自動でデコードするため、二重エンコードが必要です。%自 ...
6月24日 21:39 投稿
MyBatisにおける#{}と${}の違いとSQLインジェクション対策
MyBatisでSQLマップを使用してクエリを実行する際、動的にパラメータを渡す必要があることがよくあります。例えば、以下のようなSQL文があります:
SELECT * FROM users WHERE user_id = #{userId} AND user_name = '${userName}'
動的SQLの解析段階において、#{ }と${ }は異なる挙動を示します:
#{ }はJDBCのプリペアドステートメント(prepared statement)のパラメー ...
6月1日 23:31 投稿
UNION SELECTを利用した認証ロジックの迂回:SQLインジェクション問題の解析
内部クエリの特定とエンコーディングの剥ぎ取り
対象システムに対して初期パラメータを送信し、応答パターンを観察するところから解析を開始します。
name=abc&pw=a
上記を送信すると「wrong user」が返却されます。次にシングルクォートを追加した以下のペイロードを試します。
name=1%27&pw=a
応答内にBase32エンコードされた文字列が含まれていることが確認でき ...
5月30日 06:33 投稿
Webセキュリティ:エラーインジェクションの原理と実践手法
?id=1' and extractvalue(1,concat(0x7e,database())) -- a
上記のクエリを実行すると、データベースの名前がエラーメッセージとして表示されます:
database() の部分は、実行したい任意のSQL文に置き換えることができます。
次に、エラーインジェクションがどのようにデータを表示するのかを段階的に分析していきます。
二、実行原理
1. コードロジックの分析
テスト ...
5月24日 09:58 投稿
SQLインジェクションの実践ガイド
データベースの操作とSQLインジェクションの応用
ここでは、SQLインジェクションの基本的な手法と応用について解説します。
課題1: SQLインジェクションの基礎
まず最初に、数字型のパラメータを扱う例を見ていきます。
<code>
?param=1 and 1=1
?param=1 and 1=2
</code>
上記のクエリは、ページがエラーを返さない場合、SQLインジェクションの可能 ...
5月22日 01:36 投稿