首页 > 编程语言 >ctfshow web110(php读取文件内置类)

ctfshow web110(php读取文件内置类)

时间:2022-10-18 11:23:12浏览次数:62  
标签:内置 web110 getcwd FilesystemIterator v1 ctfshow 父类 php

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-16 11:25:09
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-29 22:49:10

*/


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

    if(preg_match('/\~|\`|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\-|\+|\=|\{|\[|\;|\:|\"|\'|\,|\.|\?|\\\\|\/|[0-9]/', $v1)){
            die("error v1");
    }
    if(preg_match('/\~|\`|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\-|\+|\=|\{|\[|\;|\:|\"|\'|\,|\.|\?|\\\\|\/|[0-9]/', $v2)){
            die("error v2");
    }

    eval("echo new $v1($v2());");

}

?>

该题目过滤这么多,完全不用考虑其他的,思路很明确就是找到PHP能够获取目录文件名的内置类。---->直接翻PHP文档。

第一个类FilesystemIterator。

往下翻可以看到FilesystemIterator继承的父类DirectoryIterator有__toString方法,并且会返回目录的文件名。

我们这里用payload如下

?v1=FilesystemIterator&v2=getcwd

而不是利用父类。

?v1=DirectoryIterator&v2=getcwd

自己本地试一下就知道咯。

 

标签:内置,web110,getcwd,FilesystemIterator,v1,ctfshow,父类,php
From: https://www.cnblogs.com/meng-han/p/16801983.html

相关文章

  • 断点php-断点续传-大文件断点上传
    ​文件夹数据库处理逻辑public class DbFolder{    JSONObjectroot;       public DbFolder()    {        this.root= new JSONOb......
  • PHP有关邮件的设置
    介绍要用php来实现邮件的收发,可能还是需要做一些设置的。这里可能会有三种方式来发送邮件。SendMail​......
  • ctfshow web105($$变量覆盖)
    <?php/*#-*-coding:utf-8-*-#@Author:Firebasky#@Date:2020-09-1611:25:09#@LastModifiedby:h1xa#@LastModifiedtime:2020-09-2822:34:07*......
  • ctfshow web101(反射类Reflectionclass的使用)
    <?php/*#-*-coding:utf-8-*-#@Author:h1xa#@Date:2020-09-1611:25:09#@LastModifiedby:h1xa#@LastModifiedtime:2020-09-2200:26:48#@link......
  • ctfshow web99(in_array函数漏洞)
    <?phphighlight_file(__FILE__);$allow=array();//设置为数组for($i=36;$i<0x36d;$i++){array_push($allow,rand(1,$i));//向数组里面插入随机数}if(isset......
  • PHP 获取短链等接跳转后的真实地址
    //1、用get_headers函数php自带的get_headers函数可以获取服务器响应一个HTTP请求所发送的所有标头functionget_redirect_url_by_header($url){$header=get_hea......
  • php 常用工具函数
    返回时间戳差值部分,年、月、日functionget_date_diff($startstamp,$endstamp,$return='m'){$y=date('Y',$endstamp)-date('Y',$startstamp);$m=d......
  • docker安装php-redis扩展
    使用docker安装的PHP-Redis扩展,需要安装一下扩展。首先进入docker的php容器$dockerexec-itphp /bin/bash依次执行下列命令$curl-L-o/tmp/redis.tar......
  • PHP执行代码的步骤
    1.Scanning(Lexing),将PHP代码转换为语言片段(Tokens)2.Parsing,将Tokens转换成简单而有意义的表达式3.Compilation,将表达式编译成Opocdes4.Execution,顺次执行Opc......
  • ctfshow-crypto
    密码学签到}wohs.ftc{galf是倒叙,将字符串逆序就行crypto2打开浏览器进入查看,复制粘贴到控制台直接回车flag就会出现crypto3同上一样crypto4用py写一个crypto5同上crypto6打......