返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP中变量覆盖漏洞的案例分析
  • 215
分享到

PHP中变量覆盖漏洞的案例分析

2023-06-14 06:06:32 215人浏览 八月长安
摘要

这篇文章主要介绍了PHP中变量覆盖漏洞的案例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.extract()变量覆盖1.extract()extract() 函数从数

这篇文章主要介绍了PHP中变量覆盖漏洞的案例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

1.extract()变量覆盖

1.extract()

extract() 函数从数组中将变量导入到当前的符号表。

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

该函数返回成功设置的变量数目。

extract(array,extract_rules,prefix)

参考引用:https://www.runoob.com/php/func-array-extract.html

eg:

<?phpextract($_GET); echo $name.'<br>';echo $age.'<br>';echo $phone.'<br>';//GET传参:?name=xiaohua&age=22&phone=112323123//结果:// xiaohua// 22// 112323123?>

2.CTF中extract()导致的变量覆盖

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

我们大致分析是要求我们GET传参进去值会经过extract()函数下来会有两个if 第一个if判断 ceshi这个变量是否存在 存在则继续执行if里面的

使用file_get_contents()读取flag变量里面的文件传递给content变量 之后再进行判断传进来ceshi变量的值等不等于$content如果等于则打印出flag!

这里我们构造因为通过extract()函数我们传进的值会变成一个变量 例如我们GET传入 ceshi=1 则会存在$ceshi=1 所以我们构造GET传参pyaload:

GET传参payload:$ceshi=&$flag= 

这样再程序中会有两个为空的变量而$flag=空 则覆盖了上面的$flag中的值 这样进行判断 都是空的所以为真则得到flag

3.漏洞修复

不要使用。。。。
参考 官方文档 修改extract_rules 里面的值为EXTR_SKIP eg:

extract($_GET,EXTR_SKIP);

2.PHP动态变量覆盖

1.动态变量覆盖

PHP动态变量是指一个变量名的变量名可以动态的设置和使用,一个变量获取另一个变量的值作为这个变量的变量名。

<?php$bar= "a";$Foo="Bar";$World="Foo";$Hello="world";$a="Hello";echo $a; //helloecho $$a; //worldecho $$$a; //fooecho $$$$$a; //Barecho $$$$$$a; //aecho $$$$$$$a; //helloecho $$$$$$$$a; //world?>

CTF中的动态变量覆盖

Https://www.cnblogs.com/xhds/p/12586928.html CTF中的动态变量覆盖

3.漏洞修复

避免使用这个

3.parse_str()变量覆盖

1.parse_str()

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

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

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

parse_str(string,array)

参考引用:https://www.runoob.com/php/func-string-parse-str.html

eg:

<?phpparse_str("name=xiaohua&age=22");echo $name."<br>";echo $age;?>//xiaohua//22

2.CTF中parse_str()导致的变量覆盖

<?phperror_reporting(0);$flag="flag{xiaohua-2020}";if (empty($_GET['id'])) { show_source(__FILE__); die();} else { $a = "www.xiaohua.com"; $id = $_GET['id']; @parse_str($id); // if ($a[0] != 'QNKCDZO' && md5($a[0]) == md5('QNKCDZO')) {  echo $flag; } else {  exit("no no"); }}?>

分析代码 判断GET传入的id值是否为空为空的话输出源码终止程序,否则的话则接收id值 经过parse_str() 然后呢if判断 $a[0] 的值要不等于QNKCDZO

但$a[0]的md5值要等于QNKCDZO这里可以采用Hash比较缺陷来解决这一步 下来就是传入变量覆盖$a[0]的值 因为有parse_str所以我们可以构造payload:

payload:http://127.0.0.1/test.php?id=a[0]=s878926199a 

3.漏洞修复

为了防止变量覆盖,尽量使用指定输出变量方式

4.import_request_variables()变量覆盖

1.import_request_variables()

(PHP 4 >= 4.1.0, PHP 5 < 5.4.0)

import_request_variables—将 GET/POST/Cookie 变量导入到全局作用域中

将 GET/POST/Cookie 变量导入到全局作用域中。如果你禁止了reGISter_globals,但又想用到一些全局变量,那么此函数就很有用。

import_request_variables ( string $types [, string $prefix ] ) : bool

参考引用:https://www.php.net/manual/zh/function.import-request-variables.php

2.CTF中import_request_variables()导致的变量覆盖

<?php$num=0;//include 'flag.php';import_request_variables('gp'); //导入get和post中变量if($num=="xiaohua"){ echo 'flag{ xiaohua-2020-3-28}'; // echo $flag.php;}else{ echo "NO!";}?> //payload:http://127.0.0.1/test.php?num=xiaohua//flag{ xiaohua-2020-3-28}

3.漏洞修复

尽量不要使用....

5.PHP全局变量覆盖

1.register_globals

当register_globals全局变量设置开启时,传递过来的值会被直接注册为全局变量而使用,这会造成全局变量覆盖

在PHP5.3之前 默认开启 PHP5.3默认关闭 PHP5.6及5.7已经被移除

2.CTF中全局变量覆盖

测试环境:php5.2.17

<?phpif ($num){ echo "flag{xiaohua-2020-3-28}";}?> //payload:http://127.0.0.1/test.php?num=1//flag{xiaohua-2020-3-28}

3.漏洞修复

关闭register_globals=off 或者使用5.6以上版本。。

感谢你能够认真阅读完这篇文章,希望小编分享的“PHP中变量覆盖漏洞的案例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网PHP编程频道,更多相关知识等着你来学习!

--结束END--

本文标题: PHP中变量覆盖漏洞的案例分析

本文链接: https://lsjlt.com/news/268537.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP中变量覆盖漏洞的案例分析
    这篇文章主要介绍了PHP中变量覆盖漏洞的案例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.extract()变量覆盖1.extract()extract() 函数从数...
    99+
    2023-06-14
  • PHP中的变量覆盖漏洞深入解析
    目录1.extract()变量覆盖2.PHP动态变量覆盖3.parse_str()变量覆盖4.import_request_variables()变量覆盖5.PHP全局变量覆盖1.e...
    99+
    2024-04-02
  • 如何解析Java的方法覆盖与变量覆盖
    这篇文章给大家介绍如何解析Java的方法覆盖与变量覆盖,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先,我们看看关于重载,和覆盖(重写)的简明定义:方法重载:如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方...
    99+
    2023-06-17
  • 360提示DedeCms全局变量覆盖漏洞(临时解决方法)
    描述: 目标存在全局变量覆盖漏洞。 1.受影响版本DEDEcms 5.7、5.6、5.5。 2.漏洞文件/include/common.inc.php 3.DEDECMS的全局变量初始化存在漏洞,可以任意覆盖任意全局变量...
    99+
    2022-06-12
    DedeCms 全局变量覆盖
  • thinkphp5.0.X全版本变量覆盖导致RCE的示例分析
    小编给大家分享一下thinkphp5.0.X全版本变量覆盖导致RCE的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!简介总是碰到一些thinkphp5.0.X的站点,网上搜索漏洞利用payload会有好几种,变量覆...
    99+
    2023-06-14
  • Mysql覆盖索引的示例分析
    小编给大家分享一下Mysql覆盖索引的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!概念如果索引包含所有满足查询需要的数...
    99+
    2024-04-02
  • JavaScript代码覆盖的示例分析
    这篇文章给大家分享的是有关JavaScript代码覆盖的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。它为什么是有用的 作为一名JavaScript开发者,你可能经常发现...
    99+
    2024-04-02
  • PHP反序列化漏洞实例分析
    本篇内容介绍了“PHP反序列化漏洞实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、PHP面向对象编程在面向对象的程序设计(Obje...
    99+
    2023-06-29
  • CSS样式覆盖规则的示例分析
    这篇文章给大家分享的是有关CSS样式覆盖规则的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先需要明确的是,很多情况都会导致一个元素被运用上多种样式,样式覆盖的规则也需...
    99+
    2024-04-02
  • mysql覆盖索引高性能的示例分析
    这篇文章主要介绍mysql覆盖索引高性能的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、高性能的原因索引通常比记录要小,覆盖索引查询只需要读索引,而不需要读记录。索引都按照值的大小进行顺序存储,相比与随机...
    99+
    2023-06-15
  • Node.js中CVE-2017-14849漏洞的示例分析
    这篇文章给大家分享的是有关Node.js中CVE-2017-14849漏洞的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。0x01 漏洞简介CVE(http:/...
    99+
    2024-04-02
  • javascript变量提升案例分析
    本篇内容主要讲解“javascript变量提升案例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript变量提升案例分析”吧! ...
    99+
    2024-04-02
  • PHP 函数的单元测试和覆盖率分析
    php 函数的单元测试和覆盖率分析:使用 phpunit 进行单元测试,编写 .test.php 文件隔离和测试单个函数。使用 phpunit 命令运行单元测试。使用 phpunit -...
    99+
    2024-04-28
    php 单元测试 composer
  • PHP的session反序列化漏洞分析
    这篇文章主要讲解了“PHP的session反序列化漏洞分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP的session反序列化漏洞分析”吧!PHP session反序列化漏洞PHP ...
    99+
    2023-06-30
  • Nagios XI多个漏洞分析预警的示例分析
    这篇文章主要介绍Nagios XI多个漏洞分析预警的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!0x00 漏洞背景Nagios Core 是一个开源的系统,也是一个网络监控系统。它可以监视你指定的...
    99+
    2023-06-19
  • 网站漏洞修复之上传webshell漏洞修补的示例分析
    这篇文章主要为大家展示了“网站漏洞修复之上传webshell漏洞修补的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“网站漏洞修复之上传webshell漏洞修补的示例分析”这篇文章吧。SI...
    99+
    2023-06-03
  • PHP常量和变量之变量引用的示例分析
    小编给大家分享一下PHP常量和变量之变量引用的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!关于PHP常量和变量之变量引用分别写两段代码,如下所示:<php$fo =8;//$fo的值为8,将8赋值...
    99+
    2023-06-15
  • PHP语法和PHP变量的示例分析
    这篇文章给大家分享的是有关PHP语法和PHP变量的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PHP 语法PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器。。。。。。。。。。。。。。。基...
    99+
    2023-06-04
  • SQL注入漏洞过程的示例分析
    这篇文章将为大家详细讲解有关SQL注入漏洞过程的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码示例:public class JDBCDe...
    99+
    2024-04-02
  • SMB协议漏洞传播的示例分析
    这期内容当中小编将会给大家带来有关SMB协议漏洞传播的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。2017年,勒索病毒WannaCry和Petya利用SMB 1...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作