SQL インジェクションを成功させるには、mysqli_multi_query の使用が重要です
P粉925239921
P粉925239921 2023-12-15 08:46:18
0
1
455

SQL インジェクションのサンプルを作成しようとしていますが、mysqli_multi_query に変更しない限り、MySQL は 2 番目のクエリを毎回拒否します。

リーリー

このフォームは実際には何もしません。SQL インジェクションを使用してデータを編集できることを示したいだけです。 「DROP TABLE testTable」を入力したインジェクションを行いたいと考えています。私の MySQL は次のようになります:

リーリー

インジェクション入力時: ';テーブルテストテーブルを削除 --

出力は次のとおりです。 エラー: SELECT * FROM users WHERE name = ''; テーブル テスト テーブルを削除します --' SQL 構文にエラーがあります。MySQL サーバーのバージョンのマニュアルを確認して、行 1 "DROP TABLE testTable --"

付近で使用する正しい構文を確認してください。

チュートリアルを続行すると、MySQLi_query が使用され、正常に動作しましたが、注入を完了するには、Mysqli_multi_query に変更する必要がありました。

###ありがとう###
P粉925239921
P粉925239921

全員に返信(1)
P粉795311321

Indeedmysqli_query()複数のクエリは許可されません。これを行うには、mysqli_multi_query() が必要です。この関数の使用を回避すると、DROP TABLE の例など、複数のクエリの実行に依存する SQL インジェクション攻撃から保護されます。

ただし、SQL インジェクションは、DROP TABLE に加えて、他の種類の害を引き起こす可能性もあります。

SQL クエリのロジックを制御できる追加パラメーターを使用して、PHP ページの URL にアクセスできます:

テーブル内のすべての行を読み取ります:

リーリー

別の表を読む:

リーリー

サービス拒否攻撃を実行して、1兆行の一時テーブルを使用してデータベース サーバーを停止します:

リーリー

SQL インジェクションは必ずしも悪意のある攻撃であるとは限りません。これは正当な文字列の意図しない使用である可能性があり、予期しない SQL 構文が発生します:

リーリー

SQL インジェクションの修正はよく知られており、簡単です: パラメータ化されたクエリを使用します。

完全な例については、 mysqli_prepare() マニュアル またはスタック オーバーフローの人気の質問 ( PHP で SQL インジェクションを防ぐには?) を確認してください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!