プロジェクトを監査していて、クエリにデータを挿入する方法を見つけました。このプロジェクトは Hibernate を使用し、このコード部分Session.createSqlQuery()
に.list()
SQL は次のようなものです: " SELECT * FROM tablename ORDER BY column XXXXXX
"
XXXXXX
Fiddler を使用して変更できます。だから私は試しました
SELECT * FROM tablename ORDER BY column DESC; truncate table tablename;
残念ながら(私の注射の試みのみ)それは機能せず、私は得ています:
SQL 構文にエラーがあります。「truncate table tablename」の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
私の質問は、彼らは createSQLQuery を使用しているので、インジェクションから安全かということです。そうでない場合は、問題を強調するための例を教えてください。
たとえば、以前のクエリ文字を削除できると思って %08 (バックスペース文字) を使用してみました (うまくいきませんでした;))
ありがとう。
いくつかの調査の結果、このセキュリティホールでデータを変更できないようですが、使用ORDER BY (CASE WHEN ...)
するとテーブルとデータを「スキャン」できます。