常见的PHP漏洞

小灰灰 2022-11-14 11:50 219阅读 0赞

因为PHP是弱类型语言,所以内置的很多函数,在进行转换和比较的时候,会有各种漏洞需要关注。

1、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开头的,这个时候黑客过来破解,很容易就攻入了。

    {

    1. md5_str1: "0e545993274517709034328855841020", md5_str2: "0e848240448830537924465865611904", bool: true}

2、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]

3、in_array漏洞

  • in_array中是先将类型转为整形,再进行判断
  • 转换的时候,如果将字符串转换为整形,从字符串非整形的地方截止转换,如果无法转换,将会返回0

    <?phpvar_dump(in_array(“2%20and%20%”, [0,2,3]));

结果如下

  1. bool(true)

4、switch漏洞

  • switch中是先将类型转为整形,再进行判断
  • 转换的时候,如果将字符串转换为整形,从字符串非整形的地方截止转换,如果无法转换,将会返回0

    <?php$i =”abc”;switch ($i) {

    1. case 0: case 1: case 2: echo "i是比3小的数"; break; case 3: echo "i等于3";}

结果如下

  1. i是比3小的数

5、intval强转漏洞

  1. <?phpvar_dump(intval('2')); //2var_dump(intval('3abcd')); //3var_dump(intval('abcd')); //0...

发表评论

表情:
评论列表 (有 0 条评论,219人围观)

还没有评论,来说两句吧...

相关阅读

    相关 常见Web漏洞

    前言         经常听大家提起漏洞,其实漏洞分很多种,今天我来介绍一下常见的Web漏洞有哪些吧。 -------------------- 1、SQL注入漏洞

    相关 常见PHP漏洞

    因为PHP是弱类型语言,所以内置的很多函数,在进行转换和比较的时候,会有各种漏洞需要关注。 1、md5加密漏洞 比较哈希字符串的时候,php程序把每一个以“0x”开头

    相关 PHP常见漏洞防范措施

    一、常见PHP网站安全漏洞 对于PHP的漏洞,目前常见的漏洞有五种。分别是Session文件漏洞、SQL注入漏洞、脚本命令执行漏洞、全局变量漏洞和文件漏洞。这里分别对这些漏洞