bugku_ctf,web第5题_矛盾

题目

$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}

还是php的代码, 看过之前的get那题应该知道该如何答题

分析

num赋一个值, 这个值不是数字但是等于1. 看似矛盾实则不是.只需要在数字后加上字母即可。原理在下面的基础知识部分。

解答

直接在地址栏加上

?num=1a

基础知识

==:会先将字符串类型转化成相同,再比较
===: 会先判断两种字符串的类型是否相等,再比较.

在转化时, 对于1a这种数字在前字符在后的混合型, 会只将前边的数字转换为int型。即1a转化为1
这属于php的弱类型问题, 更多的关于php的弱类型绕过, 参考该文章https://www.cnblogs.com/Mrsm1th/p/6745532.html

你可能感兴趣的:(bugku_ctf,web第5题_矛盾)