ホームページ  >  記事  >  運用・保守  >  php7 の新機能を使用してアンチキリング ルールをバイパスする

php7 の新機能を使用してアンチキリング ルールをバイパスする

王林
王林転載
2020-03-04 10:45:203171ブラウズ

php7 の新機能を使用してアンチキリング ルールをバイパスする

最近、私は Webshel​​l アンチウイルスについて研究していて、その経験から新しい点を思いつきました。理由は、php7.1では変数関数のアサートが使えないので、php7の新機能を使ってアンチキリングルールをバイパスし、最後に某シールドと「某d0g」をバイパスすれば良いのではないかとふと思いついたからです。

実験環境は7.1.9で、php7以下の環境では全馬が使用できません。

Dシールドルールベース(最新): 20191227

某d0gが自社製品のテストを行うことで侵害を引き起こす可能性があるため、通報防止のため画像は掲載しておりません。

事前実験

あるシールド

まずは以下のコード

php7 の新機能を使用してアンチキリング ルールをバイパスする

php7 の新機能を使用してアンチキリング ルールをバイパスする

直接的な誤警報。

したがって、パラメーターを eval に直接渡すことは非現実的です。

したがって、次に関数を使用し、PHP の新機能と連携してそれを回避する必要があります。

特定の d0g

特定の d0g に関しては、次のコード

php7 の新機能を使用してアンチキリング ルールをバイパスする

を使用すると誤ったレポートが発生します。

したがって、馬のないゲームを作成する場合、post の変数は eval の文字列に現れるべきではありません。上記の `b` と同様ですが、`eval` では変数として表示されます。この基礎を念頭に置いて、本題に進むことができます。

PHP7.0.x

[phpマニュアル-php7.0.xの新機能]( https://www.php.net/manual/zh/migration70.new-features.php )

戻り値の型宣言

php7 では戻り値の型宣言のサポートが追加され、関数を定義するときに `:type` を追加するだけです。

例:

php7 の新機能を使用してアンチキリング ルールをバイパスする

# は、関数の戻り値の型が int である必要があることを意味します。そうしないと、強制的に変換されるか、構文エラーが表示されます。

この機能を備えたウイルス対策ソフトウェアが更新されていない場合、この機能は認識されず、バイパスされます。

例:

php7 の新機能を使用してアンチキリング ルールをバイパスする

#ウイルス対策ソフトウェアを使用してテストできます。

php7 の新機能を使用してアンチキリング ルールをバイパスする

# 検出されませんでした。 ###############使える。

null 合体演算子

php7 の新機能を使用してアンチキリング ルールをバイパスする日常の使用では三項式と `isset()` が同時に使用される状況が多数あるため、null 合体演算子 (*??*) が追加されています。 . 糖衣構文。変数が存在し、その値が **`NULL`** でない場合は独自の値を返し、それ以外の場合は 2 番目のオペランドを返します。

#簡単に言うと、

#` の使い方は? ? ` マークがある場合、強制終了ソフトウェアはこの処理プロセスを理解できないため、バイパスが発生する可能性があります。

次のコードのように、特定の d0g

php7 の新機能を使用してアンチキリング ルールをバイパスする

をバイパスしてから、関数 call

## を使用できます。

php7 の新機能を使用してアンチキリング ルールをバイパスする

##D シールドに合格していることがわかります

#使いやすさをテスト

php7 の新機能を使用してアンチキリング ルールをバイパスする

##見てみましょう7.1 の機能について php7 の新機能を使用してアンチキリング ルールをバイパスする##php7.1.x

[php マニュアル-php7.0.x の新機能]( https://www.php.net/manual/zh/migration71. new-features.php )

Null 可能な型

php7 の新機能を使用してアンチキリング ルールをバイパスする型の前に疑問符を追加することで、パラメーターと戻り値の型を Null 可能にできるようになりました。この機能が有効な場合、渡されるパラメーターまたは関数によって返される結果は、指定された型または null のいずれかになります。

7.1 よりも多くの機能がありますか? `関数の戻り値が指定された型でない場合、それは空になります。

同じコードを使用します:

驚くことではありません

php7 の新機能を使用してアンチキリング ルールをバイパスする

渡されたシールド D

短い配列構文

短い配列構文 ([]) は list() のフォールバックになりました構文オプション。配列の値を一部の変数 (foreach を含む) に割り当てるために使用できます。

ここでは、角括弧 `[] type` のリストをデモのために使用します。

php7 の新機能を使用してアンチキリング ルールをバイパスする

このようにして、配列の値が` $c`、`$d`に代入されます。`$c='a';$d= 'b' ;`

このように、めったに使用されないこの機能を使用して、静的強制終了を回避できます。

最初に最も単純なものを作成します:

php7 の新機能を使用してアンチキリング ルールをバイパスする

その後、特定の d0g を通過しました。自分でテストしてみてください。

その後、関数を一致させることができます。次のように:

php7 の新機能を使用してアンチキリング ルールをバイパスする

チェックしてください

php7 の新機能を使用してアンチキリング ルールをバイパスする

テストの可用性

php7 の新機能を使用してアンチキリング ルールをバイパスする

list() はキー名をサポートするようになりました

公式説明: list() とその新しい [] 構文は、その中でキー名の指定をサポートするようになりました。これは、任意のタイプの配列をいくつかの変数に割り当てることができることを意味します (短い配列構文と同様)

これは非常にわかりにくいですが、例を見れば理解できるかもしれません。

例:

php7 の新機能を使用してアンチキリング ルールをバイパスする

少し変更するだけで特定の d0g に合格できます (セルフテスト):

php7 の新機能を使用してアンチキリング ルールをバイパスする

Try D Shield

php7 の新機能を使用してアンチキリング ルールをバイパスする

報告レベル 1

カスタム関数を再度使用します。

php7 の新機能を使用してアンチキリング ルールをバイパスする

php7 の新機能を使用してアンチキリング ルールをバイパスする

# ユーザビリティをテストするために D に合格しました。

php7 の新機能を使用してアンチキリング ルールをバイパスする#負の文字列オフセットをサポート

公式説明

オフセットをサポートするすべての文字列演算関数が、負の数値をオフセットとして受け入れることをサポートします。 [] または {} による文字列の添字。この場合、負のオフセットは文字列の末尾からのオフセットとして理解されます。


7.1 より前のバージョンでは、負のオフセットは空の文字列を返します。

例:

php7 の新機能を使用してアンチキリング ルールをバイパスする 7.1.x では `s` を返しますが、以前のバージョンでは ` string(0) "" を返します `

アイデア: ルールが認識できないように文字列を分割できます。最後に、PHP の変数変数

php7 の新機能を使用してアンチキリング ルールをバイパスする を使用して、特定の d0g を渡すことができます。ただし、Dシールドの場合は、つなぎ文字や可変変数は認識されます。レベル 1 の「不審なファイル」の報告は、本当によく行われていると言わざるを得ません。

End

実際には、「define() による定数配列の定義」など、同様にバイパスできる機能が多数あります。また、カスタム関数だけでなく、クラス、変数なども静的強制終了をバイパスするために使用できます。


`spaceship 演算子 (結合比較演算子)` や `整数除算関数 intdiv()` などを使用して動的強制終了をバイパスすることもできます。

その他の関連記事については、php 中国語 Web サイトの

web サーバー セキュリティ

列に注目してください。

以上がphp7 の新機能を使用してアンチキリング ルールをバイパスするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は开发者热榜で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。