这些常见的PHP漏洞,如果你不知道,就别说自己是个攻城狮
2020-11-19 19:35
393 查看
前言: 因为PHP是若类型语言,所以内置的很多函数,在进行转换和比较的时候,会有各种漏洞需要关注。
目录
一、md5加密漏洞
- 比较哈希字符串的时候,php程序把每一个以“0x”开头的哈希值都解释为科学计数法0的多少次方,恒为0
- 所以如果两个不同的密码经过哈希以后,其哈希值都是以“0e”开头的,那么php将会认为他们相同。
- 另外md5加密是有几率两个字符串不同,但是加密后的值是相同的情况,这种情况称为哈希碰撞
<?php $str1 = 's878926199a'; $str2 = 's214587387a'; echo json_encode([ 'md5_str1' => md5($str1), 'md5_str2' => md5($str2), 'bool' => md5($str1) == md5($str2) ]);
- 结果如下,两个值加密后竟然相等
- 缺点你懂的,如果一个网站的某个用户密码加密后刚好是0e开头的,这个时候黑客过来破解,很容易就攻入了
{ md5_str1: "0e545993274517709034328855841020", md5_str2: "0e848240448830537924465865611904", bool: true }
二、is_numeric漏洞
- 会忽视0x这种十六进制的数
- 容易引发sql注入操作,暴漏敏感信息
echo json_encode([ is_numeric(233333), is_numeric('233333'), is_numeric(0x233333), is_numeric('0x233333'), is_numeric('233333abc'), ]);
- 结果如下
- 16进制数0x61646D696EASII码对应的值是admin
- 如果我们执行了后面这条命令的话:SELECT * FROM tp_user where username=0x61646D696E,结果不言而喻
[ true, true, true, false, false ]
三、in_array漏洞
- in_array中是先将类型转为整形,再进行判断
- PHP作为弱类型语言,类型转换的时候,会有很大漏洞
- 转换的时候,如果将字符串转换为整形,从字符串非整形的地方截止转换,如果无法转换,将会返回0
<?php var_dump(in_array("2%20and%20%", [0,2,3]));
- 结果如下
bool(true)
四、switch漏洞
- switch中是先将类型转为整形,再进行判断
- PHP作为弱类型语言,类型转换的时候,会有很大漏洞
- 转换的时候,如果将字符串转换为整形,从字符串非整形的地方截止转换,如果无法转换,将会返回0
<?php $i ="abc"; switch ($i) { case 0: case 1: case 2: echo "i是比3小的数"; break; case 3: echo "i等于3"; }
- 结果如下
i是比3小的数
五、intval强转漏洞
- PHP作为弱类型语言,类型转换的时候,会有很大漏洞
- 转换的时候,如果将字符串转换为整形,从字符串非整形的地方截止转换,如果无法转换,将会返回0
<?php var_dump(intval('2')); //2 var_dump(intval('3abcd')); //3 var_dump(intval('abcd')); //0
相关文章推荐
- 这25个大数据术语,如果你不知道就别说自己懂大数据!
- 如何对PHP程序中的常见漏洞进行攻击(上)
- PHP程序的常见漏洞攻击分析
- 如何对PHP程序中的常见漏洞进行攻击
- 常见php页面漏洞分析及相关问题解决
- PHP程序中的常见漏洞
- 浅析PHP反序列化漏洞之PHP常见魔术方法(一)
- 自己总结的一些关于前端和php的面试中的常见的问题
- 如果不测试,作为程序员的你绝对不知道自己有多么粗心
- PHP网页常见漏洞
- 【转】如何对PHP程序中的常见漏洞进行攻击(下)
- PHP程序常见漏洞攻击分析
- DVWA中学习PHP常见漏洞及修复方法
- 如何对PHP程序中的常见漏洞进行攻击(上)
- 如何对PHP程序中的常见漏洞进行攻击(上)
- 一个人,如果你不逼自己一把,你根本不知道自己有多优秀
- 如何对PHP程序中的常见漏洞进行攻击
- (C/C++面试题)没看过不知道自己有多差!!!!原本以为自己C还可以,也做过几个项目了,看了这些面试问题,我傻住了!!!!
- PHP网站常见安全漏洞,及相应防范措施总结
- (转)失败和拒绝,也是一种肯定 找工作时,我四处碰壁这一段经历对自己职业生涯的帮助最大。为什么? "因为这些挫折让我的脸皮变厚了 如果你不是每天被人拒绝,那就说明你的人生目标不够远大 所谓成功,就是不停地经历失败,并且始终保持热情