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 @   small黄  阅读(591)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示