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 投稿
攻防世界 Warmup: デシリアライゼーションとSQLインジェクションの脆弱性
本記事では、CTFプラットフォーム「攻防世界」の「Warmup」という問題を解説します。この問題は、PHPのデシリアライゼーションとSQLインジェクションの脆弱性を組み合わせたものです。
問題の概要
問題は、特別な情報がない入力フォームを提示します。付属のソースコードが提供されており、それを分析することでフラグを取得する必要があります。
ソースコードの分析
与 ...
5月16日 22:05 投稿