WeChall - Are you serial
Challenge
PHP 反序列化漏洞。页面显示多个源码文件,需要通过操控
serial_user cookie 触发
SERIAL_Solution::__wakeup() 调用
onChallengeSolved()。
Solution
源码结构:
code.php: 读取serial_usercookie,调用unserialize(),然后用结果调用getUsername()/getPassword()/getUserlevel()SERIAL_Solution.php:__wakeup()方法调用onChallengeSolved()SERIAL_User.php: 包含username,password,userlevel属性
核心漏洞: unserialize() 会实例化 cookie
中指定的类。如果反序列化 SERIAL_Solution
对象,__wakeup() 会自动触发。
Payload (设置为 serial_user cookie):
1 | O:16:"SERIAL_Solution":0:{} |
使用 curl 提交:
1 | $ curl -b 'WC=<session>; serial_user=O%3A16%3A%22SERIAL_Solution%22%3A0%3A%7B%7D' \ |
注意: __wakeup() 触发后,代码继续调用
getUsername() 等方法可能导致 fatal error。如果 curl
不生效,尝试通过浏览器 cookie 注入。