ホームページ  >  記事  >  バックエンド開発  >  PHP urldecode_PHP による SQL インジェクションの脆弱性に注意する チュートリアル

PHP urldecode_PHP による SQL インジェクションの脆弱性に注意する チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:23:201027ブラウズ

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

tru​​ehttp://www.bkjia.com/PHPjc/324509.html技術記事 IhipopスクールのDiscuz X1.5フォーラムがハッキングされ、午後中ずっとそこで口論があった。 「Discuz! X1-1.5 Notice_credit.php Blind SQL Injection Exploit」で Google で調べればわかります。ディスカスは国です...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。