这里就总结一下,自己没有做出来的原因:没队友交流、时间紧
Web2
比赛时抓包看cookie里面有jwt,就去google发现是jwt伪造,原题也看到了,只要能伪造好jwt,就能直接登录无需密码
卡题原因:不知道jwt的密钥,现学现卖不是强项
说实话,也没有想到要用到解密工具,因为既然不知道admin的密码,用自己注册的账号解出来的密钥不应该是自己独有的密钥吗(被没有注册时jwt为空给迷惑了)
所以说只要是注册的用户,加密密钥都是相同的'NuAa'
伪造用户名admin
Web3
需要构造pop链,类似题目WP也看了,还真的现学现卖差一点就成功
卡题原因:没有url编码
自己构造的exp:
<?php class lemon { protected $ClassObj; function __construct() { $this->ClassObj = new evil(); } }class evil { private $data; } $a = new lemon(); echo serialize($a); ?>
题目要看flag.php,必须构造lemon类的构造函数访问evil类
其实挺遗憾的,没想到最后还要在编译器里url编码才能传参,之前一直直接输进地址栏
错误的序列化:
O:5:%22lemon%22:1:{s:11:%22%20*%20ClassObj%22;O:4:%22evil%22:1:{s:10:%22%20evil%20data%22;N;}}
鉴于之前刷的题目,这道题没法直接传参的原因大概是序列化以后存在的特殊字符,复制之后就出错了