IhipopスクールのDiscuz X1.5フォーラムがハッキングされ、午後中ずっとそこで口論があった。 「Discuz! X1-1.5 Notice_credit.php Blind SQL Injection Exploit」で Google で調べればわかります。
Discuz は中国で非常に人気のあるフォーラム システムであり、ハッキングされた Web サイトがたくさんあるはずです。ただし、私は他人の Web サイトをハッキングすることに興味はありません。また、コードを書くことができず、他人がリリースしたツールを使って攻撃するだけの、いわゆる「ハッカー」も軽蔑しています。
コードをざっと確認すると、この SQL インジェクションの脆弱性は urldecode 関数によって引き起こされていることがわかります。 PHP マニュアルには、urldecode 関数の下に次の警告があります:
スーパーグローバル $_GET および $_REQUEST は既にデコードされています。 $_GET または $_REQUEST の要素で urldecode() を使用すると、予期しない危険な結果が生じる可能性があります
。 Discuz の開発者 (おそらく初心者) がやりすぎて、追加の urldecode を追加しました:
コードをコピー コードは次のとおりです:
foreach($_POST as $k => $v) {
$value = urldecode($v ; %27 を取得すると、PHP はマジック クオートの設定をチェックしますが、マジック クオートがオンになっているかどうかに関係なく、一重引用符がまったくないため、%27 にはスラッシュが追加されません。しかしこのとき、PHP コードに urldecode を追加すると、%27 がシングルクォーテーションになってしまいます。
私が初めて PHP を学んだとき、学校の図書館で悪い本を読みました。その本には、PHP がフォームを処理するときに自動的に URL デコードするということさえ記載されていなかったので、それをデコードするために urldecode 関数を使用しました (漠然と覚えています)。このように書くと本当に誤解を招きます)。
要約すると、1. 良い本を選ぶことが非常に重要です。2. urldecode 関数は注意して使用してください。 3. PHP マニュアルの警告に注意してください。
原文は http://demon.tw/programming/php-urldecode-sql-injection.html から
http://www.bkjia.com/PHPjc/324509.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/324509.html技術記事 IhipopスクールのDiscuz X1.5フォーラムがハッキングされ、午後中ずっとそこで口論があった。 「Discuz! X1-1.5 Notice_credit.php Blind SQL Injection Exploit」で Google で調べればわかります。ディスカスは国です...