【攻防世界】web新手练习007 simple_php
难度系数:1
题目描述:
小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
题目场景:
http://111.200.241.244:55838/
解题思路
-
遇见web题目,习惯性F12看一下控制台。
嗯,网页结构就是一串php代码
-
思考题目提示simple_php随手设置的密码
很明显,网页中的代码是php语言编写的。
因此,按照php语言去理解:
(1)a和b是两个变量,这两个变量可以通过get的方式去传参。
(2)flag由两部分组成,flag1和flag2。
(3)需要把两个逻辑判断都为真才能得到两部分flag。
-
flag1的获得
if($a==0 and $a){
echo $flag1;
}
(1)需要同时满足两个条件:
条件1:变量$a==0
条件2:$a
,$a
条件1是php弱类型的等于判定,也就是说$a
与0,可以数据类型不相等,只要$a
的最后结果是0就可以。比如:$a
的值是字符串"hello"
,那么"hello"
与0
做==
操作比较时,会先把字符串转换成数字0
所相同的数据类型,所有字符串转换成数字类型之后,都是数字0 。因此,a可以是0,也可以是任意字符串。
条件2是$a
为真,也就是说$a
不能是0 。
综上所述,a只能是除了“1"之外的任意字符串。
(2)在地址栏加入?a=“hell0”
注: 此处a可以是任意字符串
得到了flag1:
Cyberpeace{647E37C7627CC3E401
4.flag2的获得
if(is_numeric($b)){
exit();
}
if($b>1234){
echo $flag2;
}
(1)需要同时满足两个条件
条件1:$b
不能是数字类型
条件2:$b
要大于数字1234
注:is_numeric() 函数会判断如果是数字和数字字符串则返回 TRUE,否则返回 FALSE。
由于php的弱类型转化,要同时满足 条件1和条件2,则需要使得$b
的值为大于1234再拼接任意字符串,如:“9999hahahah”.
(2)在地址栏加入?9999hahahah
注: 此处b可以是大于1234再拼接任意字符串*的字符串
得到了flag2:
9EC69324F66C7C}
5. 结合flag1和flag2
(1) 方法1:可以根据刚刚得到的flag1和flag2直接拼接
(2)方法2:可以根据上述拼接的地址,直接在地址栏中输入,得到完整的flag
答案
Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}
思考
php的弱类型比较。
如果我的文章能帮你节约20秒,就请你为我的文章点个赞吧!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)