题目没有给出信息,先打开环境,看题目里面有什么信息。
OK,给出信息确定这个题是一道代码审计题目,阅读代码可以知道
如果num不是纯数字,则响应num
如果num不是纯数字且等于1,则响应num和flag
引出知识点
弱比较和强比较的知识点
1. 弱比较(Weak Comparison)
-
定义:弱比较通常指的是在比较两个值时,不考虑它们的类型,只比较它们的值。这种比较方式可能会导致一些意外的结果,因为不同类型的值可能会被隐式转换为相同的类型进行比较。
-
举例:
-
在JavaScript中,使用
JavaScript==
运算符进行比较时,就是弱比较。例如:let a = 5; let b = "5"; console.log(a == b); // 输出:true
在这里,
a
是一个数字类型,b
是一个字符串类型。==
运算符会尝试将b
隐式转换为数字类型,然后再进行比较,因此结果为true
。
-
2. 强比较(Strong Comparison)
-
定义:强比较指的是在比较两个值时,不仅比较它们的值,还比较它们的类型。如果类型不同,即使值相同,比较结果也为
false
。 -
举例:
-
在JavaScript中,使用
JavaScript===
运算符进行比较时,就是强比较。例如:let a = 5; let b = "5"; console.log(a === b); // 输出:false
在这里,
a
是一个数字类型,b
是一个字符串类型。===
运算符会同时比较它们的值和类型,因此结果为false
。
简而言之,弱比较只在乎值是否相等,强比较在乎值和形式
看题目,题目在告诉你上传一个弱比较,而且值不能等于1
构建payload: ?num=1a
得到flag,这个题解出,得到flag。
-