首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

代码审计Day1 - in_array函数缺陷

前言 大家好,我们是红日安全-代码审计小组。最近我们小组正在做一个PHP代码审计的项目,供大家学习交流,我们给这个项目起了一个名字叫 PHP-Audit-Labs 。...下面是 第1篇 代码审计文章: Day 1 - Wish List 题目叫做愿望清单,代码如下: 漏洞解析 : 这一关卡考察的是一个任意文件上传漏洞,而导致这一漏洞的发生则是不安全的使用 in_array...因为PHP在使用 in_array() 函数判断时,会将 7shell.php 强制转换成数字7,而数字7在 range(1,24) 数组中,最终绕过 in_array() 函数判断,导致任意文件上传漏洞...in_array :(PHP 4, PHP 5, PHP 7) 功能 :检查数组中是否存在某个值 定义 : bool in_array ( mixed $needle , array $haystack...这里我将 in_array() 函数的第三个参数设置为 true ,代码及防护效果如下: 结语 看完了上述分析,不知道大家是否对 in_array() 函数有了更加深入的理解,文中用到的CMS可以从

93310

PHP代码审计01之in_array()函数缺陷

> 这一关考察的是任意文件上传漏洞,导致这个漏洞发生的是上方代码中,对in_array()函数使用不规范导致的。这里详细说一下in_array()函数的用法。...现在看上方代码第12行,这里使用了in_array()函数来检查文件名,但是没有设置第三个参数!,只会进行弱类型比较,不会检查数据类型。...为了加深对in_array()的理解,这里写一段简单的代码。 <?php $id =3 and 1=1; $whitelist = range(1, 5); if (!...所以我们将上文第三行代码修改为:if (!in_array(id, whitelist,true)),再执行就会输出:“你想搞事”。 现在是不是对in_array()函数有了一个大概的了解呢?...CTF练习 这道题目也是in_array()函数没有设置第三个参数,导致白名单被绕过,然后被SQL注入。下面我们具体看一下相关代码。 index.php <?

1.6K30
您找到你想要的搜索结果了吗?
是的
没有找到
领券