コード監査(いくつかのタイプ)(2)

空白の問題

ここに画像の説明を挿入

is_numeric()空白スキップの問題

is_numeric()関数では、空白文字のスキップの問題があります。ここに画像の説明を挿入
効果は次のとおりです。
ここに画像の説明を挿入
ここで追加できるのは、「」、「\ r」、「\ n」、「\ t」、「\ v」、「\ f」です。

トリム()

ここに画像の説明を挿入
ここで、この関数は、上記の「」、「\ t」、「\ n」、「\ r」、「\ 0」、「\ x0B」を削除
して、値であるかどうかを判断する最初の条件をバイパスします。

以下では、もし私たちが理解したいのがintval()とstrval()である場合は、引き続き以下を調べます。

INTVAL()

ここに画像の説明を挿入
成功するとvarのint値を返し、失敗すると0を返します。空の配列は0を返し、空でない配列は1を返します。最も重要なのは、intvalの最大値がオペレーティングシステムに依存することです。32ビットシステムの最大符号付き整数の範囲は-2147483648〜2147483647です。64ビットシステムでは、最大符号付き整数値は9223372036854775807です。

最終的なペイロード:?数値= 0.00%00または?数値= 0.00%00または?数値= 9223372036854775807%00
後ろの%00 も%20
変更できます。正常に再現できなかったため、理由がわかりません。しかし、アイデアはこのようなものです。

疑似乱数

mt_rand

ここに画像の説明を挿入

mt_srand

ここに画像の説明を挿入
たとえば、mt_srand()関数を使用して種をまくと、生成される乱数は同じになります。このように、mt_rand()関数のシードを反転することで、別の乱数の値を取得できます。ここで推奨されるツールは、githubで利用できるphp_mt_seedです。リンクを配置しません。通常は、ファイルのインクルードに従って行うことができます。詳しくは、

オペレーター

ここに画像の説明を挿入
非常に単純なロジックです。ここでは、オペレーターに優先順位テーブルを与えて
ここに画像の説明を挿入
から、テーブルの内容を注意深く見ると、ペイロードが構築されていることがわかります。payload:? A = 1

Parse_url

親密なポスト構文
ここに画像の説明を挿入
戻り値に注意してください。null は弱い型で使用できます

ここに画像の説明を挿入

ここに画像の説明を挿入
を見ると、判断によって_、0、数字、文字などの入力が制限されている場合、1番目、2番目、3番目がわかります。判断の場合、数字がないことが明らかであることは明らかです。 、それで、変数urlにnullを割り当てることによってのみそれをバイパスすることができます。ペイロード:_ = dまたは。= d

元の記事を25件公開しました 高く評価しました14 訪問5445

おすすめ

転載: blog.csdn.net/qq_40568770/article/details/102966856