首页 > 编程语言 >ctfshow web111(变量覆盖+PHP超全局变量)

ctfshow web111(变量覆盖+PHP超全局变量)

时间:2022-10-18 12:03:11浏览次数:79  
标签:GET preg web111 v1 v2 ctfshow PHP match

function getFlag(&$v1,&$v2){
    eval("$$v1 = &$$v2;");
    var_dump($$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)){
            getFlag($v1,$v2);
    }

这里简单说一下:&--->引用,在函数内改变变量值以后,外面的数值紧跟改变。但在函数体内无法引用函数体外的其他变量,因此无法直接v2==flag。

该题我们利用PHP的超全局变量$GLOBALS

因此payload如下:

?v1=ctfshow&v2=GLOBALS

 

标签:GET,preg,web111,v1,v2,ctfshow,PHP,match
From: https://www.cnblogs.com/meng-han/p/16802145.html

相关文章

  • ctfshow web110(php读取文件内置类)
    <?php/*#-*-coding:utf-8-*-#@Author:h1xa#@Date:2020-09-1611:25:09#@LastModifiedby:h1xa#@LastModifiedtime:2020-09-2922:49:10*/h......
  • 断点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......