BUU CODE REVIEW
题目是简单的代码审计
<?php
highlight_file(__FILE__);
class BUU {
public $correct = "";
public $input = "";
public function __destruct() {
try {
$this->correct = base64_encode(uniqid());
if($this->correct === $this->input) {
echo file_get_contents("/flag");
}
} catch (Exception $e) {
}
}
}
if($_GET['pleaseget'] === '1') {
if($_POST['pleasepost'] === '2') {
if(md5($_POST['md51']) == md5($_POST['md52']) && $_POST['md51'] != $_POST['md52']) {
unserialize($_POST['obj']);
}
}
}
主要是考察绕过md5和php变量的引用。md5这个地方可以用md5弱碰撞,因为是弱类型比较。以下几个的md5弱类型比较均相等
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
这些字符串的 md5 值都是 0e 开头,在 php 弱类型比较中判断为相等 或者使用数组进行绕过,直接传入两个空数组即可 一些关于绕过md5的文章:
https://blog.csdn.net/CSDNiamcoming/article/details/108837347
第二个点是如何让那两个类变量相等 这里使用的是php的传引用,如下图 所以我们可以使用下面的代码构造payload 构造好后,传入对应的参数,即可拿到flag 
|