最近参加了一场有趣的比赛,在黄河流域的网络安全挑战中遇到了一些有意思的问题,花费了一些时间,但成功地获取了关键信息。
在挑战中,我遇到了一个注册登录系统,其中有一个base64输入框。猜测可能存在pickle反序列化漏洞,我进行了简单测试,发现返回的数据是pickletools.dis解析的opcode结构。我尝试使用反弹shell的opcode来获取权限,最终成功地获得了shell,并获取了flag。
在这个挑战中,我阅读了源代码,发现了merge函数中的原型链污染漏洞。系统使用了jade引擎,我尝试利用该漏洞实现了RCE(远程命令执行),但初次尝试未能成功。通过对流程进行追踪和调试,最终成功构造了恶意payload,获得了shell,并成功获取了flag。
在逃逸大师挑战中,我遇到了一个反序列化逃逸问题,需要控制eval函数中使用的变量值。通过分析substrstr函数并构造逃逸字符串,最终成功执行了phpinfo函数并获取了flag。
在这个挑战中,逻辑与之前的web挑战类似,但有一些黑名单限制。通过查看源代码中的钩子函数,我找到了一个teardown_request函数,成功利用该函数实现了内存马,并最终获取了flag。