BugKu Web渗透之矛盾
开启场景,打开网页。发现是一段php代码。
这段代码也很好理解,就是get方式传参num,如果num不是数字类型,那么输出num的值,并且num==1时,输出flag的值。
首先看看is_numeric的意思。
开始我想到了使用科学技术方法。那么1应该时等于0.1E+1,为了严谨,我使用了php编辑测试。
<?php$numm = 0.1E+1;echo($numm);
?>
运行后,结果为1
但是我把答案写进去,却没有任何显示。查了下资料,说时1*e*0.1,这个让我很困惑,这个时科学计数吗?
但是的确写进去后,答案出来了。
之后我想着用其他方法,因为他是“==”而不是“===”,两个=是弱比较,三个=是全等于。弱比较会自动换类型,所以可以用一个1开头,后面接上字符的方式,这样就自动转换成1,忽略后面的了。
于是我用1ddd去试,的确可以。
我继续放入php文件中去尝试,但是发现并不行。可能是我php版本过新的原因吧。
之后还能用逻辑或运算去解决。num=1||‘f’,如下图也是可以的。