Inhaltsverzeichnis
Problembeschreibung
Der Code der getStreamVariable-Methode der Smarty-Klasse lautet wie folgt:
Heim Betrieb und Instandhaltung Sicherheit So verwenden Sie Smarty SSTi

So verwenden Sie Smarty SSTi

May 15, 2023 am 11:37 AM
smarty ssti

Problembeschreibung

Die Frage stellt eine API zum Lesen von XFF-Headern bereit. Es kann festgestellt werden, dass sie mit der Smarty-Engine geschrieben wurde.

#🎜 🎜#Bestimmen Sie grundsätzlich die Möglichkeit von SSTi auf dieser Seite

Smarty SSTi怎么用

Ändern Sie den xff-Header von 127.0.0.1 auf 127.0.0{ 1+2} Das folgende Ergebnis erscheint

ssti Es besteht kein Zweifel

Smarty SSTi怎么用

Die endgültige Nutzlast ist

# 🎜🎜#

X -Forwarded-For: {if var_dump(file_get_contents('/flag')) }{/if}

Smarty SSTi怎么用Smarty SSTI Exploit# 🎜🎜#

Smarty wurde auf Basis von PHP entwickelt. Die Methode zur Nutzung von Smartys SSTI unterscheidet sich stark vom üblichen SSTI von Flask.

Sicherheitslückenbestätigung

Im Allgemeinen können Sie die zurückgegebene Smarty-Versionsnummer sehen, indem Sie {$smarty.version} eingeben. Die Smarty-Version dieser Frage ist 3.1.30

Allgemeine VerwendungSmarty SSTi怎么用

Smarty unterstützt die Verwendung von {php}{/ php}-Tag, um die darin eingeschlossenen PHP-Anweisungen auszuführen. Die gängigste Idee ist, das Tag zuerst zu testen. Aber was dieses Thema betrifft, wird bei Verwendung des {php}{/php}-Tags ein Fehler gemeldet:

Das offizielle Handbuch von Smarty3 hat die folgende Beschreibung:# 🎜🎜#Smarty SSTi怎么用

Smarty hat das Tag {php} veraltet und es wird dringend empfohlen, es nicht zu verwenden. In Smarty 3.1 ist {php} nur in SmartyBC verfügbar.

Diese Frage verwendet die Smarty-Klasse, daher können wir nur einen anderen Weg finden.

{literal} Tag

Das offizielle Handbuch beschreibt dieses Tag wie folgt:

{literal} kann die Zeichen in a belassen Vorlagenbereich, wenn sie ausgegeben werden. Dies wird häufig verwendet, um zu verhindern, dass Javascript- oder CSS-Stylesheets auf der Seite aufgrund von Smarty-Trennzeichen falsch analysiert werden.

Dann können wir für die PHP5-Umgebung

<script language="php">phpinfo();</script>
Nach dem Login kopieren
verwenden, um die PHP-Codeausführung zu implementieren, aber die Frageumgebung dieser Frage ist PHP7, diese Methode Es schlägt fehl.

statische Methode

Das Abrufen der Smarty-Klasse durch sich selbst und das anschließende Aufrufen ihrer statischen Methode zum Lesen und Schreiben von Dateien wird in vielen Artikeln im Internet übernommen.

Der Code der getStreamVariable-Methode der Smarty-Klasse lautet wie folgt:

public function getStreamVariable($variable)
{
       $_result = '';
       $fp = fopen($variable, 'r+');
       if ($fp) {
           while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
               $_result .= $current_line;
          }
           fclose($fp);
           return $_result;
      }
       $smarty = isset($this->smarty) ? $this->smarty : $this;
       if ($smarty->error_unassigned) {
           throw new SmartyException('Undefined stream variable "' . $variable . '"');
      } else {
           return null;
      }
  }
Nach dem Login kopieren

Sie können sehen, dass diese Methode eine Datei lesen und ihren Inhalt zurückgeben kann, sodass wir sie verwenden können self, um das Smarty-Objekt abzurufen und diese Methode aufzurufen. Die in vielen Artikeln angegebene Nutzlast hat die Form: {self::getStreamVariable("file:///etc/passwd")}. Die Verwendung dieser Nutzlast löst jedoch den folgenden Fehler aus:

Fatal error: Uncaught --> Smarty Compiler: Syntax error in template „string:display("string:".$ip); }

Sie können sehen, dass Zeichenfolgen anstelle von Smarty-Vorlagen verwendet werden, was dazu führt, dass die eingefügten Smarty-Tags direkt analysiert und ausgeführt werden, was zu SSTI führt.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Smarty SSTi. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie verhindert PHP SSTI-Angriffe? Wie verhindert PHP SSTI-Angriffe? Jun 30, 2023 am 09:36 AM

So verwenden Sie PHP zur Abwehr von Server-SideTemplateInjection (SSTI)-Angriffen Einführung: Server-SideTemplateInjection (SSTI) ist eine häufige Sicherheitslücke bei Webanwendungen. Ein Angreifer kann den Server dazu veranlassen, beliebigen Code auszuführen, indem er bösartigen Code in die Template-Engine einschleust Dies stellt ein ernstes Sicherheitsrisiko dar. In PHP-Anwendungen kann SST offengelegt werden, wenn Benutzereingaben nicht korrekt verarbeitet werden

Eine vorläufige Studie zu Smarty, der Template-Engine in PHP Eine vorläufige Studie zu Smarty, der Template-Engine in PHP May 11, 2023 pm 05:15 PM

Heutzutage ist die Website-Entwicklung untrennbar mit einer wichtigen Komponenten-Template-Engine verbunden. Eine Template-Engine bezieht sich auf ein Tool, das Seitenvorlagen und Daten kombiniert, um HTML-Code mit einem bestimmten Format zu generieren. In verschiedenen Website-Entwicklungsframeworks ist die Template-Engine eine wesentliche Komponente, da die Template-Engine die Duplizierung von Code erheblich reduzieren und die Dynamik der Seite verbessern kann. Eine der gebräuchlichsten und beliebtesten Template-Engines ist Smarty. Smarty ist ein DSL (DomainSpecif

So verwenden Sie PHP und Smarty, um eine Front-End- und Back-End-Trennentwicklung zu erreichen So verwenden Sie PHP und Smarty, um eine Front-End- und Back-End-Trennentwicklung zu erreichen Jun 25, 2023 pm 01:46 PM

In der modernen Webentwicklung ist die Trennung von Front-End und Back-End zu einem sehr beliebten Trend geworden, der es Entwicklern ermöglicht, Projekte besser zu organisieren und die Effizienz der Projektentwicklung zu verbessern. PHP und Smarty sind zwei sehr häufig verwendete Technologien, mit denen eine Front-End- und Back-End-Trennungsentwicklung erreicht werden kann. In diesem Artikel wird erläutert, wie Sie mit PHP und Smarty eine Front-End- und Back-End-Trennungsentwicklung erreichen. Was ist Front-End- und Back-End-Trennung? Bei der traditionellen Webentwicklung ist das Front-End hauptsächlich für die Darstellung der Seite und die Logik der Interaktion mit dem Back-End verantwortlich. Das Backend ist hauptsächlich für das Geschäft verantwortlich

So verwenden Sie die Smarty-Template-Engine in der PHP-Entwicklung So verwenden Sie die Smarty-Template-Engine in der PHP-Entwicklung Jun 27, 2023 pm 01:28 PM

Als PHP-Entwickler ist die Verwendung einer Template-Engine eine natürliche Wahl. Smarty ist eine beliebte Template-Engine, die eine Möglichkeit bietet, HTML/CSS/JavaScript vom PHP-Code zu trennen, sodass Entwickler Projekte besser organisieren und verwalten können. In diesem Artikel erfahren Sie, wie Sie die Smarty-Template-Engine während der PHP-Entwicklung verwenden. 1. Smarty installieren Vorher müssen wir Smarty installieren. In diesem Artikel verwenden wir Composer zur Installation

So verwenden Sie PHP und die Smarty-Template-Engine So verwenden Sie PHP und die Smarty-Template-Engine May 11, 2023 pm 03:33 PM

PHP ist eine leistungsstarke serverseitige Skriptsprache, die zur Entwicklung von Webanwendungen verwendet werden kann. In den Anfängen der Webentwicklung verwendeten Programmierer viel HTML- und JavaScript-Code, um Webanwendungen zu entwickeln. Allerdings ist dieser Ansatz schwer zu warten und zu verwalten, da der HTML- und JavaScript-Code sehr komplex werden kann. Um dieses Problem zu lösen, wurde die Smarty-Template-Engine erstellt. Smarty ist eine auf PHP basierende Template-Engine zur Verwaltung und Generierung von W

Anwendung der Template-Engine Smarty in der PHP-Entwicklung Anwendung der Template-Engine Smarty in der PHP-Entwicklung Jun 14, 2023 pm 02:02 PM

Mit der rasanten Entwicklung und Modernisierung des Internets hat sich PHP als weit verbreitete Programmiersprache bei der Entwicklung von Webanwendungen nach und nach zu einer sehr beliebten Programmiersprache in der Branche entwickelt. Allerdings führen herkömmliche Code-Implementierungsmethoden im PHP-Entwicklungsprozess häufig zu einer Verschlechterung der Lesbarkeit und Wartbarkeit des Codes. Zu diesem Zeitpunkt wird eine effiziente Template-Engine zu einer der Lösungen. Unter vielen Template-Engines ist Smarty aufgrund seiner leistungsstarken Funktionen und guten Leistung zu einer beliebten Wahl bei PHP-Entwicklern geworden. In diesem Artikel werden Einzelheiten erläutert

Wie verwende ich Smarty mit CakePHP? Wie verwende ich Smarty mit CakePHP? Jun 03, 2023 pm 03:10 PM

CakePHP ist ein Open-Source-PHP-Framework, das umfangreiche Funktionen und Tools zur Beschleunigung der Entwicklung von Webanwendungen bietet. Eine der leistungsstarken Funktionen ist die Template-Engine. Standardmäßig verwendet CakePHP die native PHP-Syntax für das Rendern von Ansichten. Manchmal möchten wir jedoch möglicherweise eine andere Vorlagen-Engine verwenden, z. B. Smarty. In diesem Artikel wird die Verwendung von Smarty in CakePHP vorgestellt. 1. Was ist Smarty? Smarty ist ein vorlagenbasiertes PHP-Framework, das

Was sind Thinkphp und Smarty? Was sind Thinkphp und Smarty? Jun 14, 2022 pm 05:56 PM

thinkphp ist ein Open-Source-Leichtbau-PHP-Framework, das zur Vereinfachung der Entwicklung von Unternehmensanwendungen und der agilen WEB-Anwendungsentwicklung verwendet wird. Mit ThinkPHP können Entwickler Anwendungen bequemer und schneller entwickeln und bereitstellen. Smarty ist eine PHP-Vorlagen-Engine, die Entwicklern dabei helfen kann, Programmlogik und Seitenanzeige (Trennung von Geschäftslogik und Anzeigelogik) besser zu trennen, sodass Programmierer den logischen Inhalt des Programms ändern können, ohne das Seitendesign des Front-End-Personals zu beeinträchtigen. und das Front-End-Personal kann erneut Änderungen an der Seite vornehmen, ohne dass sich dies auf die Programmlogik des Programms auswirkt.

See all articles