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(?)还有这什么玩意的 跟对象有关的东西一起整理整理。

  不知道以后会不会填这个坑。

 

posted @ 2021-10-02 11:02  hiddener  阅读(287)  评论(0)    收藏  举报