extract变量覆盖
2024-10-09 02:14:57
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
最新文章
- DateHelper.cs日期时间操作辅助类C#
- 黑马程序员——【Java高新技术】——代理
- 【PHP设计模式 04_GongChang.php】 工厂方法
- Spring ProxyFactory
- location.hash &;&; location.href
- C#中静态方法和非静态方法的区别(一)
- 阻止Nmap的黑手
- JS画几何图形之六【过直线外一点作垂线】
- toString 方法在数组中的使用
- 【原】spring boot添加cros全局过滤器
- Pymsql
- java函数式编程之Supplier
- ABAP表抛FTP通用程序
- Dedecms织梦内容页获取当前页面顶级栏目名称方法
- HDU 2187 - 悼念512汶川大地震遇难同胞——老人是真饿了 - [大水题]
- Ubuntu18.04 - 返回到Gnome经典桌面!
- 让字体在div容器中垂直居中
- Python的扩展接口[3] ->; Matlab引擎 ->; 使用 Python 调用 Matlab 程序
- 使用JS完成注册表单的数据校验
- 【MVC】ASP.NET MVC5 使用MiniProfiler 监控MVC性能
热门文章
- [PHP][thinkphp5] 学习一:增删改查
- 【山外笔记-数据库】Memcached详解教程
- GoJS 教程新手入门(资源整理,解决方案)
- 22.Java面试学习平台-整合OSS对象存储
- all_user_func()详解
- 2019-2020-1 20199326《Linux内核原理与分析》第三周作业
- 自动化之SaltStack
- 【手把手教你】win10 虚拟机 VMware Workstation Pro 15下安装Ubuntu 19.04
- Highcharts的自适应DOM或者DIV,JS方法实现
- INTERVIEW #1