• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php_bugs学习 01 extract变量覆盖

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

php_bugs学习 01 extract变量覆盖

来源: https://github.com/bowu678/php_bugs
参考:https://www.cnblogs.com/-mo-/p/11652926.html

ps:由于一些我不太清楚的原因,导致感觉GitHub项目里面少了一些东西?比如数据库。。。还有题目感觉不太一样?

<?php

$flag=\'xxx\'; 
extract($_GET);
 if(isset($shiyan))
 { 
    $content=trim(file_get_contents($flag));
    if($shiyan==$content)
    { 
        echo\'ctf{xxx}\'; 
    }
   else
   { 
    echo\'Oh.no\';
   } 
   }

?>

目的:达成$shiyan==$content

考点:extract的变量覆盖

想法:

?shiyan=1&content=1
但是失败了

查看官方文档

这么看来我构造的应该是格式不对

在看一个例子

默认情况下extract_rules为EXTR_OVERWRITE

也就是说会直接覆盖原本的变量

同时注意一下代码中的trim

由于flag的数值未知,所以我们需要通过extrat使得flag的值(也就是content)与我们可控的shiyan数值相等

so,flag只能上传空值,那么$shiyan也上传为空值即可

payload:

?shiyan=
?shiyan=&flag
?shiyan=&content

这里的=&就相当于取得别名(就是这两个玩意都同时被赋值为空了),数据地址均为一致的

这些都可以保证flag的数值为空

$$变量覆盖

提交参数chs,则可覆盖变量"$chs"的值。$key为chs时,$$key就变成$chs

<?  
$chs = \'\';  
if($_POST && $charset != \'utf-8\'){  
    $chs = new Chinese(\'UTF-8\', $charset);  
    foreach($_POST as $key => $value){  
        $$key = $chs->Convert($value);  
    }  
    unset($chs);  
} 

关于变量覆盖具体可以参考这篇文章:
变量覆盖
这道题可以这么改一下更贴近ctf
源码:

<?php

$flag=\'wdl8jH0kbr4\'; 
extract($_GET);
 if(isset($shiyan))
 { 
    $content=trim(file_get_contents($flag));
    if($shiyan==$content)
    { 
        echo \'ctf{you_win_it}\'; 
    }
   else
   { 
    echo \'Oh.no\';
   } 
 }

?>

extract($_GET);
 if(isset($shiyan))
 { 
    $content=trim(file_get_contents($flag));
    if($shiyan==$content)
    { 
        echo \'ctf{xxx}\'; 
    }
   else
   { 
    echo ‘Oh.no\';
   } 
 }

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php之变量覆盖漏洞讲解发布时间:2022-07-10
下一篇:
phalcon安装-遇坑php-configisnotinstalled解决方法发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap