SharkCTF2021 just_json (json)
web。
题面:
.
考察的实际上只是一个php的弱类型(string==0);
payload:nickname={"key":0}(post)
关于json:
详细介绍见https://www.cnblogs.com/zhanghengscnc/p/8585403.html
感觉还是类似序列化和反序列化。
对于字符串使用json_decode()处理,生成json格式的东西。
下文中提到的json,均是对列出的字符串进行过json_decode后的结果。
(1)本题中用到的json,是最简单的键值对类型。
xxx={'键名1':值1,'键名2','值2'......}
没啥好说的。
要遍历这玩意并输出的话,一种可以采用的方法是这样:
· 这个东西遍历nickname,每次将键赋给keyy,将值赋给valuee,然后输出。
(2)但是,如果出现这样的json:
输出就变成了:
即,第二个的值是数组;那么遍历就输不出来了。
这时候就需要 json_encode把他变回字符串,才方便输出,
(3)于是,想想看可能会出现的更复杂的json:
这里再foreach,已经啥都输不出来了;第二个的值变成了一个有两个属性的对象。
必须json_encode.
(4)上面的东西写的有点奇怪。
因为,作为一个和序列化、反序列化类似的东西,应该从面向对象,以及序列化的初衷——易于存储等等 讲起。
但是,因为作为引入的题目是要构造字符串,所以讲的顺序就颠倒了。
准备等系统学了面向对象之后,把python,php,java(?)还有这什么玩意的 跟对象有关的东西一起整理整理。
不知道以后会不会填这个坑。