CTF新手入门(变量覆盖)

变量覆盖
顾名思义:可以改一个值去覆盖这个变量,我们可以利用它做些什么
一般会考:
Extract() 
Parse_str()
 
什么是Extract()?
我帮你百度了一下:
PHP extract() 函数从数组中把变量导入到当前的符号表中。
对于数组中的每个元素,键名用于变量名,键值用于变量值。
第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。
本函数返回成功设置的变量数目。
语法
extract(array,extract_rules,prefix)
上代码:
 
实例一:
<?php 
$a = 'Original'; 
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse"); 
extract($my_array); 
echo "\$a = $a; \$b = $b; \$c = $c"; 
?> 

输出:
$a = Cat;//这里的$a在数组被覆盖了呀!
$b = Dog;
$c = Horse

实例二:
<?php 
$a = 'Original'; 
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse"); 

extract($my_array, EXTR_PREFIX_SAME, 'dup'); 

echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a;"; 
?> 

输出:

$a = Original;
$b = Dog;
$c = Horse;
$dup_a = Cat;

 

什么是parse_str()? 

parse_str() 函数把查询字符串解析到变量中。

注释:如果未设置 array 参数,则由该函数设置的变量将覆盖已存在的同名变量。

注释:php.ini 文件中的 magic_quotes_gpc 设置影响该函数的输出。如果已启用,那么在 parse_str() 解析之前,变量会被 addslashes() 转换。

在数组中存储变量:

<?php 
parse_str("name=Bill&age=60",$myArray); 
print_r($myArray); 
?> 

不要走开,精彩马上就来!~

 

最后让我们来做道题吧!

深吸了一口气,你看看后面的MD5('xxxxxx')你去试试看是不是一个科学计数法?(反正我试了,确实是)

然后把$id 搞成 $a[]就行了吧

 

posted @ 2022-12-08 22:21  Alaso_shuang  阅读(225)  评论(0编辑  收藏  举报
2 3
4