0x01 extract变量覆盖

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

extract()

定义:

  • 从数组中将变量导入到当前的符号表
  • 该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量

语法:extract(array,extract_rules,prefix)

  • array,必需,要使用的数组
<?php
$a="hello";
$b= array('a' =>"world" ,"b"=>"gogogo");
extract($b);
echo $a; world
?>

trim()

定义:

  • 去除字符串首尾的空白字符(或其它字符)

语法:trim(string,charlist)

  • string,必需,要检查的字符串
  • charlist,可选,规定删除哪些字符,省略则默认删除一些\t\n等字符。
<?php
$a1="hello world \t\n";
$a2="hello world ";
$b1=trim($a1);
$b2=trim($a2,"hed");
echo $b1,PHP_EOL;
echo $b2; hello world
llo world
?>

file_get_contents()

定义:

  • 把整个文件读入到一个字符串中

语法:file_get_contents(path,include_path,context,start,max_length)

  • path,必需,规定要读文件的路径

<?php
$a="E://info.txt";
$b=file_get_contents($a);
echo $b; hello world!!!
?>

0x02代码分析

变量flag值为"xxx"

extract()接收一个数组,键名作为变量名,值为变量值(若变量名与之前变量名相同则覆盖)

如果变量shiyan不为空

变量flag的值赋值给变量content

如果shiyan与content值相同输出flag

构造payload

123.206.87.240:9009/1.php?shiyan=&flag=

//shiyan和flag都为空
//两个变量作为一个数组被GET接收

参考链接:

https://blog.csdn.net/qq_40980391/article/details/80097596

extract变量覆盖的更多相关文章

  1. 代码审计-extract变量覆盖

    <?php $flag='xxx'; extract($_GET); if(isset($shiyan)) { $content=trim(file_get_contents($flag)); ...

  2. bugku extract 变量覆盖

  3. [fortify] 变量覆盖漏洞

    一.全局变量覆盖当register_global=ON时,变量来源可能是各个不同的地方,比如页面的表单,Cookie等. <?php echo "Register_globals: & ...

  4. PHP代码审计笔记--变量覆盖漏洞

    变量覆盖指的是用我们自定义的参数值替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击. 经常导致变量覆盖漏洞场景有:$$,extract()函数,parse_str()函数, ...

  5. 2020/2/1 PHP代码审计之变量覆盖漏洞

    0x00 变量覆盖简介 变量覆盖是指变量未被初始化,我们自定义的参数值可以替换程序原有的变量值. 0x01 漏洞危害 通常结合程序的其他漏洞实现完整的攻击,比如文件上传页面,覆盖掉原来白名单的列表,导 ...

  6. PHP中的变量覆盖漏洞

    简介 今天利用周六整理了一下 php覆盖的漏洞 榆林学院的同学可以使用协会内部实验平台进行实验操作. 1.extract()变量覆盖 1.extract() extract() 函数从数组中将变量导入 ...

  7. 变量覆盖-高级篇(动态覆盖,extract综合)

    0x00 原理   变量覆盖漏洞可以让用户定义的变量值覆盖原有程序变量,可控制原程序逻辑. 0x01 代码 <?php highlight_file('index.php'); function ...

  8. ctf变量覆盖漏洞:

    1.变量覆盖: ①:针对extract函数的变量覆盖漏洞: <?php @error_reporting(E_ALL^E_NOTICE); require('config.php'); if($ ...

  9. php代码审计之变量覆盖

    变量覆盖一般由这四个函数引起 <?php $b=3; $a = array('b' => '1' ); extract($a,EXTR_OVERWRITE); print_r($b); / ...

随机推荐

  1. webstorm tslint配置

    webstorm设置 settings >> TypeScript >> TSLint, 勾选 Enable ,选取 tslint包路径...npm\node_modules\ ...

  2. Python初学者常见错误问题汇总

    1.在客户端和服务端如何传递数组? 答:在客户端和服务端可以使用json进行数据传输.在客户端把数据转换成json字符串,然后使用POST方法发送给服务端. 服务端收集到数据之后,使用json.loa ...

  3. metaspliot(一)

    来自山丘安全实验室 陈毅 https://www.cnblogs.com/sec875/articles/12243725.html linux下载与更新 apt-get update apt-get ...

  4. ubuntu下载速度慢的解决办法--修改下载源

    操作:https://blog.csdn.net/qq_24326765/article/details/81916222 推荐源:https://blog.csdn.net/qq_36328643/ ...

  5. http与web

    在看<图解http>的时候,忽然有一个想法冒出来. web与http是什么关系? http服务器与web服务器有区别?为什么用以搞混了? web的定义:它是一种基于超文本和HTTP的.全球 ...

  6. Android xUtils3.0使用手册(一)- 基础功能使用

    xUtils3 其功能不得不说,简化了很多的开发步骤,可以说是非常好的开发工具,但是苦于没有完整的使用手册,下面是使用中的一些总结,不断完善. xUtils 版本 3.3.36 jar包下载地址 ht ...

  7. mysql 之 函数

    聚合函数 avg()函数 - 计算一组值或表达式的平均值. count()函数 - 计算表中的行数. instr()函数 - 返回子字符串在字符串中第一次出现的位置. sum()函数 - 计算一组值或 ...

  8. 【Linux删除问题】Operation not permitted

    问题:删除某文件出现cannot remove 'XXX': Operation not permitted 查看问题: 1. lsattr 查看隐藏属性 [root@oldboy oldboy]# ...

  9. Crash日志解析

    当应用程序崩溃时,会创建一个崩溃报告,这对于了解导致崩溃的原因非常有用.本文档包含有关如何表示,理解和解释崩溃报告的基本信息. 1.介绍 2.获取崩溃和低内存报告 3.象征性的奔溃报告 1.位码(bi ...

  10. 全网最清晰的ConstraintLayout教程

    ConstraintLayout是AndroidStudio2.2新增的一个功能,那么这个到底是什么呢?首先第一点我们知道传统的安卓开发,页面基本都是XML编写实现,特别在一些复杂的页面上需要嵌套多层 ...