*本文为攻防世界新手练习区“simple_php”一题的解题攻略*
先读题:
题目标题“simple_php”,简单的php。
题目描述:小宁听说php是最好的语言(我不同意!),于是她简单学习之后写了几行php代码。
根据标题和描述得知这题考察php语言。
进入在线环境:
来分析这段php代码,首先创建了两个GET变量a和b,然后进行了三次判断,
第一次判断,同时满足a=0和a为真才能显示出flag1这个变量。
因为php语言中“==”为弱类型判断,会自动把判断转为同类型再比较,
故php中可以得到“abc” == 0 为真,所以我们在URL栏手动传参a=abc:
得到了flag1。
接下来两个if都是与b相关的。
第二个if中,is_numeric()函数判断一个变量是否为数字或者数字字符串,是返回true,否返回false。我们需要这个函数返回false以避免退出程序。
第三个if中,b>1234即可获得flag2。
在php的弱类型比较中,12345a>1234为true,而is_numeric(12345a)返回为假,故我们可以给b赋值12345a
同上在URL中手动传参:
得到了剩下一半的flag。
Flag Get√!
资料:
HTTP方法:https://www.runoob.com/tags/html-httpmethods.html
PHP中$_GET变量:https://www.runoob.com/php/php-get.html
PHP is_numeric()函数:https://www.runoob.com/php/php-is_numeric-function.html
END
2022/2/26