私は、SQLインジェクションでハッキングされたサイトで作業しています(一見すると、dbエントリのみがクロスサイトスクリプティングで壊れています)。コードを見て見つけた潜在的な脆弱性は、入力がエスケープされないmysql_query呼び出しがたくさんあります。SQLインジェクションによるmysql_query
古き良き:
$query = "SELECT * FROM mytable where name LIKE '%".$_GET['name']."%'"; /*HACK HERE*/
mysql_query($query, $connection);
それでも私たちはそのインジェクションの脆弱性(クールで、私はINSERTまたはUPDATEのようなものを意味する)からクールな何かを行うことができますどのように見つけることができません。私はこのような声明を作成しようとしました:
SELECT * FROM mytable where name LIKE '%' AND WHERE id IN (INSERT INTO secondtable (id,description) VALUES (15, 'Fifteenth description');--%'
いいえいいえ。私はINSERTには何もしていないと思います。
私は現在、コード内のすべてのユーザーの入力をエスケープしていますが、ハッカーがこのサイトにどのように侵入したかは実際にはわかりません。素晴らしい提案はありますか?任意のPHPがしたので、今
おかげ
私はこのサイトがこれを行う方法を尋ねる適切な場所ではないと思います:) – Mike
基本文字列と連結したときに 'name'が有効なsqlを形成していることを確認してください。 – EBarr
攻撃者は別のテーブルに簡単に 'JOIN' /' UNION'して、管理者のログイン認証情報を得ることができます。昇給された特権で、彼はもっと悪いことをすることができました。サーバ上で任意のコマンドを実行するためにPHPシェルをアップロードする – knittl