ホームページ  >  記事  >  バックエンド開発  >  discuz7.2 バージョンの faq.php SQL インジェクション脆弱性分析、discuz7.2faq.php_PHP チュートリアル

discuz7.2 バージョンの faq.php SQL インジェクション脆弱性分析、discuz7.2faq.php_PHP チュートリアル

PHP中文网
PHP中文网オリジナル
2017-03-13 15:54:061702ブラウズ

discuz7.2 FAQ.PHP SQL注入脆弱性分析のバージョン、DISCUZ7.2FAQ.PHP


Injectコードの例:

RREEEEVULNERABILITYANALYATION:byPhithon

rreeefirstアレイグループIDを定義します。次に、$gids (これも配列、つまり $_GET[gids]) を走査し、配列内のすべての値の最初のビットを取り出し、それを groupids に入れます。

なぜこの手術で注射が起こるのですか?

discuz は GET 配列に対して addlashes エスケープをグローバルに実行します。これは、' が ' にエスケープされることを意味します。そのため、受信パラメータが gids[1]=' の場合、$gids[1]=' にエスケープされます。 、代入ステートメント $groupids[] = $row[0] は、文字列の最初の文字を取得すること、つまりエスケープ記号を取り出すことと同等です。

裏側を見ると、データを SQL ステートメントに入れる前に、implodeids で処理していました。 implodeids 関数

は非常に単純な関数であることがわかります。これは、$groupids 配列を ',' で分割し、'1'、'2'、'3'、'4' などの文字列を形成するものです。返してください。

しかし、私たちの配列はエスケープ文字を取り出したばかりで、ここでは次のように通常の ' をエスケープします:

'1','','3','4'

少し違うものに気づきましたか?異なります。4 番目の一重引用符はエスケープされています。つまり、5 番目の一重引用符と 3 番目の一重引用符は閉じられています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。