BUU CODE REVIEW 1
首先进入靶机
代码审计发现,需要get传入1个参数,post传入四个参数;当correct和input相同时,就会输出flag。因此首先需要解决反序列化,再解决md5。
构造序列化的代码,关键在于使得correct===input。
※※※解读base64_encode(uniqid()):对uniqid()生成的唯一标识符进行base64编码。由于uniqid()生成的标识符是基于当前时间的,因此每次调用都会生成一个不同的唯一标识符。经过base64编码后,生成的字符串将会赋给this->correct。这意味着$this->correct的值会随时间变化而变化,因为每次调用都会生成不同的uniqid()并进行编码。
这里可以使input指向correct的地址,这样两个变量就相等了。于是得到以下代码
运行得到序列化对象 O:3:"BUU":2:{s:7:"correct";s:0:"";s:5:"input";R:2;}
接下来是弱md5绕过问题
有两种绕过的方法:
方法1: 科学计数法绕过,原理是php里面在做 == 的时候会先把两边的类型转成一样的,因为是 0e0e0e 开头,php会认为它是科学技计数法,而 0 00 的多少次方都是 0 00
常用的绕过值有:
QNKCDZO
s155964671a
s1091221200a
方法2:数组绕过,原理是 md5 等函数不能处理数组,导致函数返回Null。而Null是等于Null的,实现了绕过。
一式
二式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix