Jadual Kandungan
Perihalan masalah
Penggunaan SSTI Smarty
Pengesahan Kerentanan
Penggunaan Umum
Teg {literal}
Kaedah statik
Kod kelemahan soalan
Rumah Operasi dan penyelenggaraan Keselamatan Cara menggunakan Smarty SSTi

Cara menggunakan Smarty SSTi

May 15, 2023 am 11:37 AM
smarty ssti

Perihalan masalah

Soalan menyediakan api untuk membaca pengepala XFF terdapat perkataan Bina Dengan Smarty di bahagian bawah halaman Ia boleh ditentukan bahawa ia ditulis menggunakan enjin Smarty.

Pada asasnya ia berfungsi Tentukan kemungkinan SSTi pada halaman ini

Smarty SSTi怎么用

Tukar pengepala xff daripada 127.0.0.1 kepada 127.0.0{1+2} dan yang berikut keputusan akan muncul

ssti Tidak syak lagi

Smarty SSTi怎么用

Muatan akhir ialah

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

Smarty SSTi怎么用

Penggunaan SSTI Smarty

Smarty dibangunkan berdasarkan PHP menggunakan SSTI Smarty adalah sama dengan SSTI kelalang biasa.

Pengesahan Kerentanan

Secara amnya, anda boleh melihat nombor versi smarty yang dikembalikan dengan memasukkan {$smarty.version}. Versi Smarty bagi soalan ini ialah 3.1.30

Smarty SSTi怎么用

Penggunaan Umum

Smarty menyokong menggunakan tag {php}{/php} untuk melaksanakan perintah php yang dibalut , idea yang paling konvensional ialah menguji teg terlebih dahulu. Tetapi setakat topik ini, menggunakan teg {php}{/php} akan melaporkan ralat:

Smarty SSTi怎么用

Manual rasmi Smarty3 mempunyai penerangan berikut:

Smarty telah menamatkan teg {php} dan amat disyorkan untuk tidak menggunakannya. Dalam Smarty 3.1, {php} hanya tersedia dalam SmartyBC.

Soalan ini menggunakan kelas Smarty, jadi kami hanya boleh mencari jalan lain.

Teg {literal}

Manual rasmi menerangkan teg ini seperti berikut:

{literal} boleh menyebabkan aksara dalam kawasan templat dikeluarkan seperti sedia ada . Ini sering digunakan untuk melindungi lembaran gaya Javascript atau CSS pada halaman daripada dihuraikan secara salah disebabkan oleh pembatas Smarty.

Kemudian untuk persekitaran php5, kita boleh menggunakan

<script language="php">phpinfo();</script>
Salin selepas log masuk

untuk melaksanakan pelaksanaan kod PHP Walau bagaimanapun, persekitaran soalan soalan ini ialah PHP7, jadi kaedah ini tidak sah.

Kaedah statik

Dapatkan kelas Smarty melalui kendiri dan kemudian panggil kaedah statiknya untuk membaca dan menulis fail, yang digunakan oleh banyak artikel di Internet.

Kod kaedah getStreamVariable kelas Smarty adalah seperti berikut:

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;
      }
  }
Salin selepas log masuk

Anda boleh melihat bahawa kaedah ini boleh membaca fail dan mengembalikan kandungannya, jadi kami boleh menggunakan diri untuk mendapatkan Smarty object dan panggil kaedah ini , muatan yang diberikan dalam banyak artikel adalah dalam bentuk: {self::getStreamVariable("file:///etc/passwd")}. Walau bagaimanapun, menggunakan muatan ini akan mencetuskan ralat berikut:

Ralat maut: Tidak ditangkap --> Ralat sintaks dalam templat "rentetan: IP Semasa:{self::getStreamVariable('file:///etc/passwd')}" kelas statik 'self' tidak ditentukan atau tidak dibenarkan oleh tetapan keselamatan <-- dibuang ke dalam /var/www/html/ smarty/ libs/sysplugins/smarty_internal_templatecompilerbase.phpon line 12

Ia boleh dilihat bahawa kaedah penggunaan SSTI versi lama Smarty ini tidak boleh digunakan pada versi baharu Smarty. Selain itu, kaedah statik ini telah dipadamkan secara rasmi dalam versi Smarty 3.1.30. Kaedah writeFile kelas Smarty_Internal_Write_File yang disebut dalam artikel tersebut untuk menulis shell tidak boleh digunakan atas sebab yang sama.

{if} tag

Saya melihat penerangan ini dalam dokumentasi rasmi:

Smarty's {if} penghakiman bersyarat sangat serupa dengan PHP jika, dengan hanya tambahan beberapa ciri. Setiap {if} mesti mempunyai padanan {/if} Anda juga boleh menggunakan {else} dan {elseif} Semua ungkapan dan fungsi bersyarat PHP boleh digunakan di dalam jika, seperti ||, atau, &&, dan, is_array() , dsb.

Memandangkan semua fungsi PHP boleh digunakan, bolehkah kita menggunakan ini untuk melaksanakan kod kita?

Seperti yang dinyatakan pada permulaan

Kod kelemahan soalan

dibaca melalui fail selepas getshell Kod yang menyebabkan SSTI dalam soalan ini dipermudahkan seperti berikut:

display("string:".$ip);
}

Anda dapat melihat bahawa rentetan digunakan dan bukannya templat pintar, yang menyebabkan teg Smarty yang disuntik dihuraikan dan dilaksanakan secara langsung, menghasilkan SSTI.

Atas ialah kandungan terperinci Cara menggunakan Smarty SSTi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah PHP menghalang serangan SSTI? Bagaimanakah PHP menghalang serangan SSTI? Jun 30, 2023 am 09:36 AM

Cara menggunakan PHP untuk mempertahankan diri daripada serangan Server-SideTemplateInjection (SSTI) Pengenalan: Server-SideTemplateInjection (SSTI) ialah kelemahan keselamatan aplikasi web yang biasa Seseorang penyerang boleh menyebabkan pelayan melaksanakan kod sewenang-wenangnya dengan menyuntik kod hasad ke dalam enjin templat. menyebabkan bahaya keselamatan yang serius. Dalam aplikasi PHP, SST boleh didedahkan apabila input pengguna tidak dikendalikan dengan betul

Cara menggunakan PHP dan Smarty untuk mencapai pembangunan pemisahan bahagian hadapan dan belakang Cara menggunakan PHP dan Smarty untuk mencapai pembangunan pemisahan bahagian hadapan dan belakang Jun 25, 2023 pm 01:46 PM

Dalam pembangunan web moden, pemisahan bahagian hadapan dan bahagian belakang telah menjadi trend yang sangat popular, yang membolehkan pembangun mengatur projek dengan lebih baik dan meningkatkan kecekapan pembangunan projek. PHP dan Smarty ialah dua teknologi yang sangat biasa digunakan, yang boleh digunakan untuk mencapai pembangunan pemisahan bahagian hadapan dan belakang. Artikel ini akan memperkenalkan cara menggunakan PHP dan Smarty untuk mencapai pembangunan pemisahan bahagian hadapan dan belakang. Apakah pembangunan pemisahan bahagian hadapan dan bahagian belakang Dalam pembangunan web tradisional, bahagian hadapan bertanggungjawab terutamanya untuk pembentangan halaman dan logik interaksi dengan bahagian belakang. Bahagian belakang bertanggungjawab terutamanya untuk perniagaan

Kajian awal tentang Smarty, enjin templat dalam PHP Kajian awal tentang Smarty, enjin templat dalam PHP May 11, 2023 pm 05:15 PM

Pada masa kini, pembangunan laman web tidak dapat dipisahkan daripada enjin templat komponen yang penting. Enjin templat merujuk kepada alat yang menggabungkan templat halaman dan data untuk menjana kod HTML dengan format tertentu. Dalam pelbagai rangka kerja pembangunan laman web, enjin templat merupakan komponen penting, kerana enjin templat boleh mengurangkan pertindihan kod dan meningkatkan dinamik halaman dengan banyak. Salah satu enjin templat yang paling biasa dan popular ialah Smarty. Smarty ialah DSL (DomainSpecif

Cara menggunakan enjin templat Smarty dalam pembangunan PHP Cara menggunakan enjin templat Smarty dalam pembangunan PHP Jun 27, 2023 pm 01:28 PM

Sebagai pembangun PHP, menggunakan enjin templat adalah pilihan semula jadi. Smarty ialah enjin templat popular yang menyediakan cara untuk memisahkan HTML/CSS/JavaScript daripada kod PHP, membolehkan pembangun mengatur dan mengurus projek dengan lebih baik. Dalam artikel ini, kita akan belajar cara menggunakan enjin templat Smarty semasa pembangunan PHP. 1. Pasang Smarty Sebelum ini, kita mesti memasang Smarty. Dalam artikel ini kami akan menggunakan Komposer untuk memasang

Cara menggunakan PHP dan enjin templat Smarty Cara menggunakan PHP dan enjin templat Smarty May 11, 2023 pm 03:33 PM

PHP ialah bahasa skrip sebelah pelayan yang berkuasa yang boleh digunakan untuk membangunkan aplikasi web. Pada hari-hari awal pembangunan web, pengaturcara menggunakan banyak kod HTML dan JavaScript untuk membangunkan aplikasi web. Walau bagaimanapun, pendekatan ini sukar untuk dikekalkan dan diurus kerana kod HTML dan JavaScript boleh menjadi sangat kompleks. Untuk menyelesaikan masalah ini, enjin templat Smarty telah dicipta. Smarty ialah enjin templat yang dibangunkan berdasarkan PHP untuk mengurus dan menjana W

Aplikasi enjin templat Smarty dalam pembangunan PHP Aplikasi enjin templat Smarty dalam pembangunan PHP Jun 14, 2023 pm 02:02 PM

Dengan perkembangan pesat dan peningkatan Internet, PHP, sebagai bahasa pengaturcaraan yang digunakan secara meluas dalam pembangunan aplikasi Web, secara beransur-ansur menjadi bahasa pengaturcaraan yang sangat popular dalam industri. Walau bagaimanapun, dalam proses pembangunan PHP, kaedah pelaksanaan kod tradisional sering membawa kepada penurunan kebolehbacaan dan kebolehselenggaraan kod. Pada masa ini, enjin templat yang cekap menjadi salah satu penyelesaian. Di antara banyak enjin templat, Smarty telah menjadi pilihan popular di kalangan pembangun PHP kerana fungsinya yang berkuasa dan prestasi yang baik. Artikel ini akan terperinci

Bagaimana untuk menggunakan Smarty dengan CakePHP? Bagaimana untuk menggunakan Smarty dengan CakePHP? Jun 03, 2023 pm 03:10 PM

CakePHP ialah rangka kerja PHP sumber terbuka yang menyediakan ciri dan alatan yang kaya untuk mempercepatkan pembangunan aplikasi web. Salah satu ciri yang berkuasa ialah enjin templat. Secara lalai, CakePHP menggunakan sintaks asli PHP untuk pemaparan paparan. Walau bagaimanapun, kadangkala kita mungkin mahu menggunakan enjin templat lain, seperti Smarty. Artikel ini akan memperkenalkan cara menggunakan Smarty dalam CakePHP. 1. Apakah Smarty? Smarty ialah rangka kerja PHP berasaskan templat yang

Apa itu thinkphp dan smarty Apa itu thinkphp dan smarty Jun 14, 2022 pm 05:56 PM

thinkphp ialah rangka kerja PHP ringan sumber terbuka yang digunakan untuk memudahkan pembangunan aplikasi perusahaan dan pembangunan aplikasi WEB tangkas menggunakan ThinkPHP, pembangun boleh membangunkan dan menggunakan aplikasi dengan lebih mudah dan cepat. Smarty ialah enjin templat PHP yang lebih baik boleh membantu pembangun mengasingkan logik program dan paparan halaman (pemisahan logik perniagaan dan logik paparan), supaya pengaturcara boleh menukar kandungan logik program tanpa menjejaskan reka bentuk halaman kakitangan bahagian hadapan, dan kakitangan bahagian hadapan boleh semula- Mengubah suai halaman tidak akan menjejaskan logik program program.

See all articles