攻防世界——simple_php(NO.GFSJ0485)
目录
- 基础环境
- 解题过程
基础环境
靶机:xctf
方向:Web
难度:1
解题过程
打开题目
我们可以看到该题目的源码,大概分析一下:
我们需要用GET方式传两个值,分别为a,b。
接下来是第一个if,这里判断a是否等于0或者a是否为True,如果是的话,就返回flag1。
第二个if判断b是否为数字,如果是的话就终止程序
第三个if判断的是b是否大于1234,如果大于的话返回flag2
综上所述,我们现在是要传入a和b,让他们两个的值可以满足题目要求,返回flag1和flag2
首先是a的绕过,这里要提及一个php的语言特性,两个等于号是宽松比较,当字符串与数字宽松比较时,会将字符串转为数组,纯数字字符串转化为对应数字,而纯字母字符串会转为0,所以这里我们用字符串可以绕过
接下来是b的绕过,这里又要提及一个php的语言特性,有字母和数字的字符串与数字比较的时候,会将该字符串的数字部分转化为数字来比较,例如字符串’2500dasd’和数字300比较,会显示字符串大。那么这里的话也是一样的原理,只需要把b的值改为‘9999c即可’
Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}