web-dev-qa-db-ja.com

エラーが戻らずにSQLインジェクションを取得することは可能ですか?

ハックバーを使用して、WebサイトでSQLインジェクションを実行してみました。サーバーはSQLエラーに応答しませんでした。

私もsqlmapを使ってみました:

sqlmap -u http://website/login.php?op=login --dbs
sqlmap -u http://website/login.php?id=1 --dbs
[10:06:33] [CRITICAL] all tested parameters appear to be not injectable.

だから私の質問は:Webサーバーがエラーを表示していなくても、SQLインジェクションを取得することは可能ですか?

2
Salcybercat

はい、それはBlind SQL Injectionと呼ばれ、非常に困難ですが不可能ではありません。

多くのtrue/false値をクエリできる場合、それはコンテンツベースのブラインドSQLインジェクションです。

もう1つの一般的な方法は時間ベースのブラインドSQLインジェクションであり、基本的には、データベースに時間のかかる操作を実行するように指示します。 Webサイトがすぐに応答を返さない場合、WebアプリケーションはブラインドSQLインジェクションに対して脆弱です。ほとんどの場合、スリープ操作が使用されます。

yoursite.com/index.php?id=1337 and if(1=1, sleep(42), false)

ページができるだけ早くリロードしない場合は、脆弱です。

5
pguetschow

ブラインドSQLインジェクションと呼ばれる概念があります。パラメータはインジェクションに対して脆弱ですが、エラーはプログラム内から内部的に処理され、攻撃者はエラーメッセージを表示できなかったり、エラーが発生したりする状況を扱います。

チェックアウト このチュートリアル 、それはより詳細に物事を説明します。

1
kaidentity