-4

sqlmap を使用して SQL を注入できますが、これがどのように機能するのか理解できません。echo私のスクリプトにはorコマンドはありませんprintが、sqlmap はデータベース名と詳細を含むデータを返します。

見つかったインスタンスは次のとおりです。

$sql ="SELECT * FROM application where id=$id";
$act_res = mysql_query($sql);

echo または print がなく、エラー報告も停止した場合、sqlmap はどのようにして SQL インジェクションによって情報を取得したのでしょうか?

4

2 に答える 2

2

コードにはセキュリティ上の問題が 1 つあります。

入力をサニタイズする必要があります$id。DB の ID が である場合は、 is_int ()関数をint使用してチェックすることで、SQL インジェクションから保護できます。int

SQLMAP のスクリプトは、脆弱な$id入力でインジェクションを試みます。

ハッカーが にID; SQLInjectionHere--入力した$id場合、クエリは次のようになります。

SELECT * FROM application WHERE id=ID; SQLInjectionHere"

攻撃者は許可なく別の SQL リクエストを行うことができます。

SQLMAPに詳細を追加することもできます-v

PS: SELECT * を使用するのは悪い習慣です ( なぜ? )

于 2015-02-10T18:25:14.613 に答える
0

1 つの方法は、SLEEP()です。、 、を送信しSLEEP(5)、応答が生成されるまでに 5.3 秒、10.2 秒、15.5 秒かかる場合は、穴を見つけたことを確信できます。SLEEP(10)SLEEP(15)

于 2015-09-24T01:39:15.220 に答える