1

つまり、基本的に、PHPMYADMIN で SQL インジェクションをいじっているので、最終的にペン テスターに​​なることができます。

SELECT *
FROM `ip` as ipstr
WHERE 'id' = $USERINPUT_HERE
ORDER BY
ipstr.id ASC
LIMIT 0 , 30

phpmyadmin に挿入しようとすると、「ipstr」が定義されていないと表示されるため、問題が発生しています。

それがサブクエリであれば、これができることはわかっています。しかし、それはサブクエリではないので、どうすれば次のようなものを作ることができますか?

SELECT *
FROM `ip` as ipstr
WHERE 'id' = $USERINPUT_HERE
UNION ALL SELECT 1,2,3,4,5
ORDER BY
ipstr.id ASC
LIMIT 0 , 30

私が知っている誰かが、この種のインジェクションを行うことは可能だと言っていますが、クエリ全体を書き直してサブクエリを使用しないと、その方法を理解できません。ありがとう。

4

1 に答える 1

1

どれどれ。文字列に が含まれている場合''; delete ip; select * from (select 1 as id) ipstr、コードは予期しない動作をする可能性があります。(正直なところ、複数のステートメントがあるため、ステートメント全体が拒否される可能性がありますが、これは一例です。)

SQL インジェクションの解決策は、パラメーター化されたクエリを使用することです。これは難しい概念ではありません。そして、それは良い習慣です。その習慣を身につけるべきです。

于 2013-08-28T00:20:24.253 に答える