您现在的位置是:首页 > 密码破解

PHP弱类型引起的系统漏洞案例

作者:果E安全网时间:2020-10-23 20:09:41分类:密码破解

简介*文中中牵涉到的有关系统漏洞已申报生产商并获得恢复,文中只限技术性科学研究与探讨,禁止用以不法主要用途,不然造成的一切不良影响自主担负。*文中创作者:补丁下载君,文中属联合利华信息平台网原創奖赏方案,未经审批同意严禁转截。我们知道PHP是一门弱类型語言,无须向PHP申明该自变量的数据信息类型,PHP会依据自变量的值,全自动把自变量的值变换为恰当的数据信息类型,但在这个变换全过程中

*文中中牵涉到的有关系统漏洞已申报生产商并获得恢复,文中只限技术性科学研究与探讨,禁止用以不法主要用途,不然造成的一切不良影响自主担负。

*文中创作者:补丁下载君,文中属 联合利华信息平台网 原創奖赏方案,未经审批同意严禁转截。

我们知道PHP 是一门弱类型語言,无须向 PHP 申明该自变量的数据信息类型,PHP 会依据自变量的值,全自动把自变量的值变换为恰当的数据信息类型,但在这个变换全过程中就会有很有可能引起一些安全隐患。

1、会先开展类型变换,再开展比照

2、会先较为类型,假如类型不一样立即回到false,参照以下

PHP弱类型引发的漏洞实例

1 . 当一个字符串被作为一个数值来取值,其結果和类型以下:假如该字符串沒有包括'.','e','E'而且其数值值在整形美容的范畴以内,该字符串被作为int来取值。别的全部状况下都被做为float来取值,该字符串的刚开始一部分决策了它的值,假如该字符串以合理合法的数值刚开始,则应用该数值,不然其数值0。

PHP弱类型引发的漏洞实例

2.? 在开展较为计算时,假如碰到了0e这种字符串,PHP会将它分析为科学计数法。

PHP弱类型引发的漏洞实例

3.? 在开展较为计算时,假如碰到了0x这种字符串,PHP会将它分析为十六进制。

PHP弱类型引发的漏洞实例

PHP弱类型引发的漏洞实例

在找回账号密码时,当$dopost=safequestion时,根据传到的member_id查询出相匹配id客户的安全性问题和答案信息内容,在我们传到的问题和答案不以空,并且相当于以前设定的问题和答案,就进到sn()涵数。

这儿假如客户设定了问题和答案,大家并不了解问题和答案是啥,就没法进到sn()涵数。可是假如此客户沒有设定问题和答案呢?这时系统软件默认设置难题0",回答是空。0.、0.1、0e1、运用PHP弱类型就可以绕开if分辨

立即推送以下要求就可以获得密码重置的连接:

http://localhost/DedeCMS-V5.7-UTF8-SP2/member/resetpassword.php?dopost=safequestion&safequestion=0e1&safeanwser=&id=1

PHP弱类型引发的漏洞实例

随后获得的重设面连接为:(仅有沒有设定安全隐患的客户才可以重设)

http://localhost/DedeCMS-V5.7-UTF8-SP2/member/resetpassword.php?dopost=getpasswd&id=1&key=D2kIQomh

PHP弱类型引发的漏洞实例?

假如switch是数据类型的case的分辨时,switch会将在其中的主要参数变换为int类型。

PHP弱类型引发的漏洞实例

PHP弱类型引发的漏洞实例

具体实行的句子:

PHP弱类型引发的漏洞实例

in_array(search,array,type): 假如给出的值 search 存有于数组 array 中则回到 true(类似==)。假如第三个基本参数为 true,涵数仅有在原素存有于数组中且数据信息类型与给出值同样时才回到 true(类似===)。要是没有在数组中寻找主要参数,涵数回到 false。

PHP弱类型引发的漏洞实例

is_numeric在做分辨情况下,假如网络攻击把payload改为十六进制0x…,is_numeric会先对十六进制做类型分辨,十六进制被分辨为数字型为真,就进入了if语句,假如再把这个带入进到sql语句进到mysql数据库查询,mysql数据库查询会对hex开展分析成字符串存进到数据库查询中,假如这一字段名再被取下来二次运用,就很有可能导致二次引入系统漏洞。

PHP弱类型引发的漏洞实例

PHP弱类型引发的漏洞实例

strcmp(string1,string2):较为括弧内的2个字符串string1和string2,当她们2个相同时,回到0;string1的超过string2时,回到>0;低于时回到<0。在5.3及之后的php版本中,当strcmp()括弧内是一个数组与字符串较为时,也会回到0。

图片 13.png

string md5 ( string $str[, bool $raw_output=false ])

md5()必须是一个string类型的主要参数。可是如果你传送一个array时,md5()不容易出错,仅仅会没法恰当地求出array的md5值,回到null,那样便会造成 随意两个array的md5值都是会相同。

PHP弱类型引发的漏洞实例

之上便是普遍的运用PHP弱类型造成的一些安全隐患,在CTF、PHP代码审计中也会碰到这类运用弱类型来绕开判断推理,从而引起更问题的系统漏洞。期待这一总结能协助到大伙儿,感谢~~

http://php.net/manual/zh/types.comparisons.php

http://wooyun.org/bugs/wooyun-2015-089892

http://wooyun.org/bugs/wooyun-2015-0122884

http://blog.nsfocus.net/dedecms-20180109/

https://blog.formsec.cn/2018/02/05/php-weak-type/

https://www.cnblogs.com/Mrsm1th/p/6745532.html

http://www.jsdaima.com/blog/117.html

http://www.联合利华信息平台网.com/articles/web/55075.html

*文中创作者:补丁下载君,文中属 联合利华信息平台网 原創奖赏方案,未经审批同意严禁转截。

郑重声明:

果E安全网所有活动均为互联网所得,如有侵权请联系本站删除处理,转载请注明本站地址。

我来说两句