2 3 4 5 6 7 8 9 10 11 12

simple_php xctf 攻防世界 web新手练习区

题目描述

进入场景后,可以看见几行PHP代码

以GET方式获得两个参数a和b,如果a和b满足一定条件,则打印flag1和flag2,猜测将flag1和flag2拼接就能够得到完整flag

is_numeric() 函数会判断如果是数字和数字字符串则返回 TRUE,否则返回 FALSE。

所以可以知道如果要正确输出flag2,则前面的数字必须大于1234,并且后面必须要有字符串。而正确输出flag1,发现同时满足\(a==0,\)a!=null,显示flag1,php中的弱类型比较会使'abc' == 0为真,所以输入a=abc时,可得到flag1,当然也可以输入其他字符组成的字符串。

两者结合的payload:

?a=f&b=1235k

扩展:

强弱类型表示在计算机科学以及程序设计中,经常把编程语言的类型系统分为强类型和弱类型两种。这两个术语并没有非常明确的定义,但主要用以描述编程语言对于混入不同数据类型的值进行运算时的处理方式。

  • 强类型的语言遇到函数引数类型和实际调用类型不匹配的情况经常会直接出错或者编译失败;
  • 弱类型的语言常常会实行隐式转换,或者产生难以意料的结果。

PHP为弱类型语言(主要为2类)

  1. 类型转换问题
 " == “和” === "
Hash比较
十六进制转换
intval()和(string) 类型的转换
bool类型的true可以和任意字符弱类型相等
json绕过
  1. 内置函数的参数的松散性两类
md5()
strcmp()
switch()
in_array()
php的超全局变量
posted @ 2021-11-15 16:13  MrDevil  阅读(33)  评论(0)    收藏  举报