extract变量覆盖
extract()
该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。条件:若有EXTR_SKIP则不行。
1 | EXTR_SKIP - 如果有冲突,不覆盖已有的变量。 |
具体可以参考w3chttp://www.w3school.com.cn/php/func_array_extract.asp
实例
这里拿项目里的关于变量覆盖的题来看一下
1 | <?php |
payload
1 | http://127.0.0.1/php_bugs/01 extract变量覆盖.php?shiyan=&flag= |
URL 通过 get 的方式传参,传输的数据以数组的形式被封装在\$_GET 中;extract()函数从数组中将变量导入到当前的符号表,该函数使用数组键名作为变量名,使用数组键值作为变量值;isset()函数判断是否存在变量$shiyan
;trim()函数移除字符串两侧的空白字符或其他预定义字符 ,这里是移除字符串两侧的空格;file_get_contents()函数将整个文件读入一个字符串;假如$shiyan
的值等于文件的内容($content
)时,就打印出flag
南邮ctf平台也有一道关于变量覆盖的题
与上题不同的是这题以post方式提交