1.进入目标环境
解读所示代码:
get一个num,
若num不是数字,
出一次num的值,后若num=1
出flag;
若num为数字则不进行任何操作
所以要输出flag,首先要num不是数字,然后又要num=1
这显然是矛盾的。
2.单纯使num=1时:
我们发现没有任何变化!转换思路仔细查看代码发现有PHP的关键字‘echo”(好吧,我承认,我才没有那么细心,我还去瞅了一眼源代码,奈何并没有给我任何惊喜)
3.ok!我们就可以试着用php的特性解题:
对1加一个字符,如“1a”、“1-”,判断该整体是否等于1时,判别式值为True
如“1b==1”,其值会是True
由此我们可以给num任意一个“1+字符”的值
如图给了num等于1b,它就给出了flag:
由此得到了flag。
之后可以对此判断方式在做进一步测试,以熟悉它的性质:
可见1.99是数字且等于1;ab不是数字且不等于1;1b不是数字且等于1
可推测其在做“=1”的判定时,应是取了第一个字符之前的数字的整体,而与1进行比较的。