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

一式

 二式

 

posted @ 2024-01-18 11:09  small黄  阅读(284)  评论(0编辑  收藏  举报