由PHP小tip引发的思考(PHP优先级)
前段时间看到有关于CTF中PHP黑魔法的总结,其中有一段只有介绍利用方法但是没有详细介绍为什么,我想了一下,思考如下,如果不对,请各位大佬多多指正~
原话如下:
当有两个is_numeric判断并用and连接时,and后面的is_numeric可以绕过。
PHP中is_numeric 检测变量是否为数字或数字字符串,如果 var 是数字和数字字符串则返回 TRUE,否则返回 FALSE。
找了一下也没有找到为什么算是绕过, 用VulnCTF【https://github.com/jianmou/VulnCTF/tree/master/Web】里面的一道题目做例子测试一下: 初始变量被赋值为string,所以打开就是输出"is_numeric(a) and is_numeric(b) error !",根据题目同时出现is_numeric()和and判断(图一)
引用暗羽表姐的博客截图来绕过第二个is_numeric() 判断(图二)
绕过(图三)
但是只是知道这是绕过的一种方式,但是为什么会出现这种情况呢,本来以为只要第一个判断为真就不会判断后面的条件正确还是不正确 ,以为问题出现在is_numeric,但是问题好像出现在and上面,根据PHP的优先级来看 赋值运算= 优先级大于 and ,
举一个例子(图四)
算是PHP的一种特性吧(图五)...
推荐参考链接: http://php.net/manual/zh/language.operators.precedence.php
评论28次
嗯 可以的 PHP特性小知识
感谢支持~
好思路,mark
感谢支持~
最近在学xitips,有没有好的推荐呀~多谢了~
刚开始做的一个圈子,里面也有一些小tips,比网上的多了一些理解的东西 有兴趣可以加入 我正在「VulnCTF的练xi教室」和朋友们讨论有趣的话题,你一起来吧? https://t.xiaomiquan.com/237iY3N
嗯 可以的 PHP特性小知识
好思路,mark
最近在学xitips,有没有好的推荐呀~多谢了~
极客大挑战2016
图二,代码最后一行,注释处,返回false吧,我猜是手癌犯了。
哈哈哈 好像是 这是从暗羽表姐那里截的图
图二,代码最后一行,注释处,返回false吧,我猜是手癌犯了。
感谢楼主分享,重点还是在运算优先级啊平时开发基本不会这么用,这个应该就ctf或者白盒可以利用下吧
对的,优先级的运算很多人都会忽略的,大一点的cms很少出现这种问题,在CTF中比较常见,算是PHP的一种黑魔法题目吧
感谢楼主分享,重点还是在运算优先级啊 平时开发基本不会这么用,这个应该就ctf或者白盒可以利用下吧
其实这个就是学语法不精的问题,and后面都不用管,只看c
嗯嗯 虚心受教~
其实这个就是学语法不精的问题,and后面都不用管,只看c
你新建的小密圈感觉没怎么更新啊,还在犹豫要不要花钱进呢
@polinload他小密圈都开始收费啦
信息安全集中营永久免费,只不过现在需要申请才能加入【为了筛选出有基础的,保证质量】,不能直接加入了
老哥,github里面的ctf的writeup在哪里?没找到链接。
writeup还没有开放呢,过段时间会开放的~ 感觉vulnctf不错的可以star一下【算是打个广告吧】
运算符优先级 确实会带来很多问题。 mysql的 优先级问题 不就创造了好多新的万能密码了
对对对 ,对这种特性了解的多了就更好挖了
你新建的小密圈感觉没怎么更新啊,还在犹豫要不要花钱进呢
哈哈 暂时不要花钱进 我还在做一些准备呢 你可以选择多在信息安全集中营发资源 我会免费拉你进去的~
你新建的小密圈感觉没怎么更新啊,还在犹豫要不要花钱进呢
@polinload他小密圈都开始收费啦
老哥,github里面的ctf的writeup在哪里?没找到链接。
你新建的小密圈感觉没怎么更新啊,还在犹豫要不要花钱进呢