相关知识点见链接:PHP的JSON中索引数组和关联数组_json关联数组_ZZZZXPQ的博客-CSDN博客
json_decode 对 JSON 格式的字符串进行编码
JSON的构成: ws 值
值可以是对象、数组、数字、字符串或者三个字面值(false、null、true)中的一个。值中的字面值中的英文必须使用小写
1.对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的值由逗号分割的键值对组成
如:
{"name": "John Doe", "age": 18, "address": {"country" : "china", "zip-code": "10000"}}
2.数组是由方括号括起来的一组值构成
如:
[3, 1, 4, 1, 5, 9, 2, 6]
3.字符串是由双引号包围的任意数量Unicode字符的集合
在php中,如使用花括号{}包裹的数据字符串满足一定的格式要求,就会被强制转换为关联数组类型,而不是普通的字符串类型。这种格式要求是指:
1.数据字符串必须满足JSON格式,即采用双引号包裹属性名和属性值,并使用冒号分隔,多个属性之间使用逗号分隔,最后用一对大括号{}包裹整个结构体。
2.数据字符串中的属性名必须符合PHP的变量名规则,即以字母或下划线开头,后面可以跟着任意个字母,数字或下划线。
3.属性名和属性值之间必须有一个英文冒号:来进行分隔
例如,以下数据字符串就满足上述要求,可以被PHP解析为关联数组:
$data= '{"name":"John","age":30}';
在这个例子中,$data变量实际上是一个字符串类型的变量,,但由于它的格式满足了php强制转换为关联数组的条件,因此在进行某些操作时(如使用json_decode()函数解析JSON数据,php会将其自动转换为一个关联数组类型的变量。这种现象并非JSON的默认行为,在其他编程语言中也不一定存在,是php特有的语言特性。
[SWPUCTF 2021 新生赛]jicao
所以为满足if条件,输出flag,构造:
get:json={"x":"wllm"}
post:id=wllmNB 得到flag。