攻防世界web新手练习区-“simple_php”攻略

*本文为攻防世界新手练习区“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

posted @ 2022-02-26 10:51  WIllow_324  阅读(894)  评论(0编辑  收藏  举报