


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
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
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 :
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 :
Vous pouvez le tester avec un logiciel antivirus.
Trouvé non détecté.
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 :
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
puis utiliser l'appel de fonction
Vous pouvez constater que vous avez réussi le bouclier D
Tester la convivialité
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 :
Pas de surprises
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.
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 :
Puis nous avons passé un certain d0g. Testez-le vous-même.
Ensuite, vous pouvez faire correspondre la fonction. Comme ceci :
Vérifiez-le
Testez la convivialité
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 :
Vous pouvez réussir un certain d0g avec une petite modification (autotest) :
Essayez D Shield
Enregistré au niveau 1
Utilisez à nouveau la fonction personnalisée.
J'ai réussi D avec succès pour tester la convivialité.
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 :
`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 :
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Comment installer l'extension mongo dans php7.0 : 1. Créez le groupe d'utilisateurs et l'utilisateur mongodb ; 2. Téléchargez le package de code source mongodb et placez le package de code source dans le répertoire "/usr/local/src/" ; Entrez le répertoire « src/ » ; 4. Décompressez le package de code source ; 5. Créez le répertoire de fichiers mongodb ; 6. Copiez les fichiers dans le répertoire « mongodb/ » 7. Créez le fichier de configuration mongodb et modifiez la configuration.

En php5, nous pouvons utiliser la fonction fsockopen() pour détecter le port TCP. Cette fonction peut être utilisée pour ouvrir une connexion réseau et effectuer certaines communications réseau. Mais en php7, la fonction fsockopen() peut rencontrer certains problèmes, comme ne pas pouvoir ouvrir le port, ne pas pouvoir se connecter au serveur, etc. Afin de résoudre ce problème, nous pouvons utiliser la fonction socket_create() et la fonction socket_connect() pour détecter le port TCP.

Pour résoudre le problème du plugin n'affichant pas installé dans PHP 7.0 : Vérifiez la configuration du plugin et activez le plugin. Redémarrez PHP pour appliquer les modifications de configuration. Vérifiez les autorisations du fichier du plugin pour vous assurer qu'elles sont correctes. Installez les dépendances manquantes pour garantir le bon fonctionnement du plugin. Si toutes les autres étapes échouent, reconstruisez PHP. D'autres causes possibles incluent des versions de plugin incompatibles, le chargement d'une mauvaise version ou des problèmes de configuration PHP.

Comment installer et déployer php7.0 : 1. Accédez au site officiel de PHP pour télécharger la version d'installation correspondant au système local ; 2. Extrayez le fichier zip téléchargé dans le répertoire spécifié 3. Ouvrez la fenêtre de ligne de commande et accédez à ; le répertoire "E:\php7" Exécutez simplement la commande "php -v".

Les solutions courantes pour les environnements de serveur PHP consistent à s'assurer que la version correcte de PHP est installée et que les fichiers pertinents ont été copiés dans le répertoire du module. Désactivez SELinux temporairement ou définitivement. Vérifiez et configurez PHP.ini pour vous assurer que les extensions nécessaires ont été ajoutées et configurées correctement. Démarrez ou redémarrez le service PHP-FPM. Vérifiez les paramètres DNS pour les problèmes de résolution.

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Causes et solutions pour les erreurs Lors de l'utilisation de PECL pour installer des extensions dans un environnement Docker Lorsque nous utilisons un environnement Docker, nous rencontrons souvent des maux de tête ...

Par rapport à PHP7, PHP8 présente certains avantages et améliorations en termes de performances, de nouvelles fonctionnalités et améliorations de la syntaxe, du système de types, de la gestion des erreurs et des extensions. Cependant, le choix de la version à utiliser dépend de vos besoins spécifiques et des circonstances du projet. Introduction détaillée : 1. Amélioration des performances, PHP8 introduit le compilateur Just-in-Time (JIT), qui peut améliorer la vitesse d'exécution du code ; 2. Nouvelles fonctionnalités et améliorations de la syntaxe, PHP8 prend en charge la déclaration des paramètres nommés et des paramètres facultatifs, création de fonctions L'appel est plus flexible ; des classes anonymes, des déclarations de propriétés de type, etc. sont introduites.
