首页 > Web开发 > 详细

php_bugs学习 01 extract变量覆盖

时间:2021-07-03 10:59:49      阅读:26      评论:0      收藏:0      [点我收藏+]

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的数值为空

这道题可以这么改一下更贴近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‘;
   } 
 }

php_bugs学习 01 extract变量覆盖

原文:https://www.cnblogs.com/murkuo/p/14965443.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!