题目
步骤
打开靶机地址,是一段php代码
通过代码审计可以得到以下信息
1.创建了一个BUU类,类里有两个属性分别为’input’和’correct’,当类对象被销毁时给correct赋值,并且判断correct和input的值是否相等,如果相等则会输出flag。
uniqid()函数会基于以微秒计的当前时间,生成一个唯一的 ID。
base64_encode()则会对字符串进行加密
2.判断GET参数pleaseget的值是否为1,POST参数pleasepost的值是否为2,参数md51和md52的值是否不等,经过md5加密后的参数md51和md52的值是否相等,这四个条件同时满足的话,对POST参数obj进行反序列化,而对象被反序列化时会调用__destruct方法。
通过上述信息我们要做的事就很简单,构建一个url,满足上述条件,即可获得flag信息
pleaseget和pleasepost的值固定,所以不需要额外制定,md51和md52则是一个绕过弱md5的问题。
常见的绕过弱md5的方法有两种:
1.科学计数法绕过,原理是php里面在做 == 的时候会先把两边的类型转成一样的