Maison  >  Article  >  Opération et maintenance  >  Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

王林
王林avant
2020-03-04 10:45:203234parcourir

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

J'ai récemment étudié l'antivirus Webshell et j'ai trouvé un nouveau point. La raison en est que j'ai soudainement pensé que puisque php7.1 ne peut pas utiliser l'assertion de fonctions variables, alors utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-kill, et enfin contourner un certain bouclier et "un certain d0g".

L'environnement expérimental est 7.1.9, et tous les chevaux ne peuvent pas être utilisés dans des environnements inférieurs à php7.

Base des règles D-shield (dernière) : 20191227

Étant donné qu'un certain d0g peut provoquer une infraction en testant ses produits, afin d'éviter d'être signalé, la photo ne sera pas publiée.

Pré-expérience

Un certain bouclier

D'abord le code suivant

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Une fausse alerte directe.

Par conséquent, il est irréaliste de transmettre directement des paramètres à eval.

Nous devons donc ensuite utiliser les fonctions et les nouvelles fonctionnalités de PHP pour le contourner.

Un certain d0g

Et pour un certain d0g, du moment que le code suivant

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

lui donnera une fausse alarme.

Par conséquent, lors de l'écriture d'un jeu sans chevaux, les variables de post ne doivent pas apparaître dans la chaîne de eval. Tout comme « b » ci-dessus, bien qu'il apparaisse comme une variable dans « eval ». Avec cette base à l’esprit, nous pouvons aller droit au but.

PHP7.0.x

[php manual-php7.0.x nouvelles fonctionnalités]( https://www.php.net/manual/zh/migration70.new-features. php)

Déclaration du type de valeur de retour

php7 ajoute la prise en charge de la déclaration de type de valeur de retour Ajoutez simplement un `:type` lors de la définition d'une fonction.

Par exemple :

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

signifie que le type de valeur de retour de la fonction doit être int. Sinon, la conversion sera forcée ou une erreur de syntaxe sera affichée.

Si le logiciel antivirus doté de cette fonctionnalité n'est pas mis à jour, il ne reconnaîtra pas cette fonction et sera contourné.

Par exemple :

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Vous pouvez le tester avec un logiciel antivirus.

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Trouvé non détecté.

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

peut être utilisé.

Opérateur de coalescence nul

En raison du grand nombre de situations où les expressions ternaires et `isset()` sont utilisées simultanément dans l'utilisation quotidienne, l'opérateur de coalescence nul (*??*) est ajouté . Sucre syntaxique. Si la variable existe et que sa valeur n'est pas **`NULL`**, elle renverra sa propre valeur, sinon elle renverra son deuxième opérande

En bref :

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Comment utiliser ` ? ? `, le logiciel de destruction ne comprendra pas ce processus de traitement, ce qui peut conduire à un contournement.

Tout comme le code suivant, vous pouvez contourner un certain d0g

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

puis utiliser l'appel de fonction

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Vous pouvez constater que vous avez réussi le bouclier D

Tester la convivialité

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Prenons un regardez les fonctionnalités de 7.1

php7.1.x

[php manuel-php7.0.x nouvelles fonctionnalités]( https://www.php.net/manual/zh/ migration71.new-features.php )

Types nullables

Les types de paramètres et les valeurs de retour peuvent désormais être nullables en ajoutant un point d'interrogation avant le type. Lorsque cette fonctionnalité est activée, les paramètres transmis ou le résultat renvoyé par la fonction sont soit du type donné, soit null .

Une fonctionnalité de plus que la 7.1 ? `Si la valeur de retour de la fonction n'est pas du type donné, elle sera vide.

Utilisez le même code :

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Pas de surprises

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

D-shield a réussi

Syntaxe de tableau court

La syntaxe de tableau court ([]) est désormais une solution de secours pour la liste( ), option de syntaxe, peut être utilisée pour attribuer la valeur du tableau à certaines variables (y compris dans foreach).

Ici, une liste de crochets `[] type` est utilisée pour la démonstration.

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

De cette façon, les valeurs du tableau sont affectées à ` $c`, `$d`.`$c='a';$d= 'b' ;`

De cette façon, vous pouvez utiliser cette fonctionnalité rarement utilisée pour contourner la suppression statique

Écrivez d'abord la plus simple :

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Puis nous avons passé un certain d0g. Testez-le vous-même.

Ensuite, vous pouvez faire correspondre la fonction. Comme ceci :

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Vérifiez-le

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Testez la convivialité

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

list() prend désormais en charge les noms de clés

Description officielle : list() et sa nouvelle syntaxe [] prennent désormais en charge la spécification des noms de clés à l'intérieur. Cela signifie qu'il peut attribuer n'importe quel type de tableau à certaines variables (similaire à la syntaxe de tableau court)

C'est très déroutant, vous le comprendrez peut-être après avoir regardé l'exemple.

ex :

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Vous pouvez réussir un certain d0g avec une petite modification (autotest) :

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Essayez D Shield

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Enregistré au niveau 1

Utilisez à nouveau la fonction personnalisée.

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

J'ai réussi D avec succès pour tester la convivialité.

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

Prend en charge les décalages de chaîne négatifs

Description officielle

Maintenant, toutes les fonctions d'opération de chaîne qui prennent en charge les décalages Prend en charge l'acceptation de nombres négatifs comme décalages, y compris l'exploitation indices de chaîne via [] ou {}. Dans ce cas, un décalage négatif s'entend comme un décalage par rapport à la fin de la chaîne.

Dans les versions inférieures à 7.1, les décalages négatifs renvoient une chaîne vide.

par exemple :

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

`s` est renvoyé dans 7.1.x, mais ` string(0) "" est renvoyé dans les versions précédentes `

Idée : On peut diviser la chaîne pour que les règles ne puissent pas être reconnues. Enfin, utilisez les variables variables de php :

Utilisez les nouvelles fonctionnalités de php7 pour contourner les règles anti-killing

De cette façon, vous pouvez transmettre un certain d0g. Mais pour le bouclier D, les caractères d'épissage et les variables variables seront reconnus. Signalement de niveau 1 « fichiers suspects », je dois dire que c'est vraiment très bien fait.

Fin

En fait, il existe de nombreuses fonctionnalités, telles que « définir un tableau constant via définir() », qui peuvent également être contournées par analogie. Et non seulement les fonctions personnalisées, mais également les classes, les variables variables, etc. peuvent être utilisées pour contourner la suppression statique.

Vous pouvez également utiliser « l'opérateur de vaisseau spatial (opérateur de comparaison combiné) », la « fonction de division entière intdiv() », etc. pour contourner la suppression dynamique.

Pour plus d'articles connexes, veuillez faire attention à la colonne Sécurité du serveur Web du site Web chinois php !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer