[安洵杯 2019]不是文件上传 文件上传的注入

本文讲述了在一次网络安全比赛中遇到的文件上传注入问题。通过分析源码,发现check函数仅过滤文件后缀,insert_array函数存在INSERT注入,而upload函数中的attr属性在show.php中会被反序列化。利用可控的文件名结合注释符#实现注入,最终成功获取flag。此过程锻炼了搜索能力和代码审计技巧。
摘要由CSDN通过智能技术生成

进入题目传了一个jpg图片上去

发现文件名被重命名了,但是给了我们一个path路径(难道就是一个绕过题?这么轻松就会告诉你路径,跟题目有点不符)

啪啪打脸,各个地方抓一下包show.php,upload.php以及show.phpdelete_all=true,按照经验我们应该在某个地方是可以获取到这些源码的,但是我这里找了很久根本找不到……,只能再一次求助别人的wp……

没想到的是!!!

根据这条信息去github找这个出题人

获得源码,好好代码审计了(不愧是锻炼搜索能力,获得源码的方式长见识了)

<?php
class helper {
	protected $folder = "pic/";
	protected $ifview = False; 
	protected $config = "config.txt";
	// The function is not yet perfect, it is not open yet.

	public function upload($input="file")
	{
		$fileinfo = $this->getfile($input);
		$array = array();
		$array["title"] = $fileinfo['title'];//没有后缀的文件名(无过滤)
		$array["filename"] = $fileinfo['filename'];//随机数.后缀
		$array["ext"] = $fileinfo['ext'];//后缀
		$array["path"] = $fileinfo['path'];//pic/随机数.后缀
		$img_ext = getimagesize($_FILES[$input]["tmp_name"]);//getimagesize返回上传文件的大小以及相关信息

		$my_ext = array("width"=>$img_ext[0],"height"=>$img_ext[1]);
		$array["attr"] = serialize($my_ext);//序列化宽度和长度
		$id = $this->save($array);
		if ($id == 0){
			die("Something wrong!");
		}
		echo "<br>";
		echo "<p>Your images is uploaded successfully. And your image's id is $id.</p>&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值