目录知识点解读题目源码: 命令绕过知识点PHP代码审计PHP序列化和反序列化PHP中魔术方法命令执行绕过方式解读题目源码:这道题首先一上来就是一段PHP代码,其中看到unserialize()就知道考的是反序列化,但是我们再往上看代码会发现还有命令执行绕过的知识点。做出这道题的第一步就是能够理清代码执行顺序和各个函数的功能。接下来我们先分析一下源码。method=$method;$this->args=$args;}function__destruct(){if(in_array($this->method,array("ping"))){call_user_func_array(array(
感觉新手题里面最难的一题----------------------------------------------------------------正文原题:攻防世界这个题涉及的只是挺多的,不过主要就是正则表达式,php的反序列化下面是代码分析环节: 因为涉及了php的序列化和反序列化,所以我们应该先看最下面的部分:将用base64解码后的变量序列化后用POST传参。 然后是_consturuct函数,他是在函数调动前启用,为我们构造了$method和$args两个变量。_dexstruct函数在变量摧毁的时使用,所以我们把他放在后面。ping函数(姑且怎么说)规定了我们可以调用系统命令。
感觉新手题里面最难的一题----------------------------------------------------------------正文原题:攻防世界这个题涉及的只是挺多的,不过主要就是正则表达式,php的反序列化下面是代码分析环节: 因为涉及了php的序列化和反序列化,所以我们应该先看最下面的部分:将用base64解码后的变量序列化后用POST传参。 然后是_consturuct函数,他是在函数调动前启用,为我们构造了$method和$args两个变量。_dexstruct函数在变量摧毁的时使用,所以我们把他放在后面。ping函数(姑且怎么说)规定了我们可以调用系统命令。
xctf之unseping这是一道,让我头皮发麻的题,前期感觉一般,后面感觉好像搞不定了。。。看了writeup才知道php还能这样用。大开眼界了属实。题目如上,一眼就可以看出这就是考察php的反序列化,感觉这不soeasey?好像还真不是(菜鸡挠头)。首先就是正常的反序列化,在反序列化的时候首先触发__wakeup()函数,迭代args参数中的值进行过滤,解题的关键就是绕过这个过滤。可以看到,|,&,;,空格,/,cat,flag,tac,php,ls这些字符全部被过滤,其实正常来讲这里面空格被过滤是最难受的,我在网上找到了好多空格被过滤怎么绕过的,但是实际上能用的很少,并且有的符号在某些指