My Photo

« 正規表現メモ | Main | SQLインジェクション その6 »

October 13, 2013

SQLインジェクション その5

関連記事:
SQLインジェクション その1
SQLインジェクション その2
SQLインジェクション その3
SQLインジェクション その4

その他の攻撃

  • OSコマンドの実行
  • ファイルの読み出し
  • ファイルの書き出し
  • HTTPリクエストにより他のサーバを攻撃

ファイルの読み出しについて実例をあげる。
SQLインジェクション その1のスクリプトを

author=';COPY+book(title)+FROM+'/etc/passwd'--

というクエリストリングを付けてアクセスすると、以下のSQLが実行される(見やすいように適宜改行を入れてある)。

SELECT id, title, author, publisher date, price
FROM books
WHERE author ='';COPY books(title) from '/etc/passwd'

COPY文はPostgreSQLの拡張機能でファるをテーブルに読み込む。
上記の例では /etc/passwd をテーブルbooksの列titleに読み込む。読み込まれた後にさらにSQLインジェクション脆弱性を使って以下のクエリストリングを付けてアクセスするとpasswdファイルの内容を見ることができ、DBを通じてサーバ上のファイルの内容が外部に漏洩することになる。

DB中の表名・列名の調査方法

標準SQLにinformation_schemaというデータベースが規定されている。その中のtablesやcolumnsというビューで表や列の定義を参照できる。
下記はビューcolumasを使用してテーブルusersの定義をSQLインジェクション その1のスクリプトへのSQLインジェクション攻撃により表示するためのクエリストリングである。

author='+UNION+SELECT+table_name,column_name,data_type,null,null,null,null+FROM+information_schema.columns+ORDER+BY+1--

参考文献:体系的に学ぶWebアプリケーションの作り方 4.4.1 SQLインジェクション

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
徳丸 浩

ソフトバンククリエイティブ 2011-03-03
売り上げランキング : 4070

Amazonで詳しく見る
by G-Tools

« 正規表現メモ | Main | SQLインジェクション その6 »

PostgreSQL」カテゴリの記事

SQL」カテゴリの記事

セキュリティ」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/58378061

Listed below are links to weblogs that reference SQLインジェクション その5:

« 正規表現メモ | Main | SQLインジェクション その6 »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof