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的,实现了绕过。
一式
二式