i春秋-CTF-web文件上传

前言

本来吧,悄悄摸鱼,想整点啥打发时间,看视频太明显,于是做做题,眉头紧锁,仔细思考,装作工作很难的样子。

i春秋-CTF-web文件上传_第1张图片

这回选择web类型的题目,主要是好久没做了,手有点生,找个简单的文件上传练练。

打开题目环境发现:

i春秋-CTF-web文件上传_第2张图片

好像是没有什么特别的。

但是往下翻看却是别有洞天。

i春秋-CTF-web文件上传_第3张图片

 众所周知,php是后端语言,正常情况下前端是看不到的,也就是说,出题人还是很贴心的(虽然我觉得出题人没那么好心)。




    
    
    
    文件上传章节练习题
    
    


    
'; show_source(__FILE__); }else{ $file = $_FILES['file']; if(!$file){ exit("请勿上传空文件"); } $name = $file['name']; $dir = 'upload/'; $ext = strtolower(substr(strrchr($name, '.'), 1)); $path = $dir.$name; function check_dir($dir){ $handle = opendir($dir); while(($f = readdir($handle)) !== false){ if(!in_array($f, array('.', '..'))){ if(is_dir($dir.$f)){ check_dir($dir.$f.'/'); }else{ $ext = strtolower(substr(strrchr($f, '.'), 1)); if(!in_array($ext, array('jpg', 'gif', 'png'))){ unlink($dir.$f); } } } } } if(!is_dir($dir)){ mkdir($dir); } $temp_dir = $dir.md5(time(). rand(1000,9999)); if(!is_dir($temp_dir)){ mkdir($temp_dir); } if(in_array($ext, array('zip', 'jpg', 'gif', 'png'))){ if($ext == 'zip'){ $archive = new PclZip($file['tmp_name']); foreach($archive->listContent() as $value){ $filename = $value["filename"]; if(preg_match('/\.php$/', $filename)){ exit("压缩包内不允许含有php文件!"); } } if ($archive->extract(PCLZIP_OPT_PATH, $temp_dir, PCLZIP_OPT_REPLACE_NEWER) == 0) { check_dir($dir); exit("解压失败"); } check_dir($dir); exit('上传成功!'); }else{ move_uploaded_file($file['tmp_name'], $temp_dir.'/'.$file['name']); check_dir($dir); exit('上传成功!'); } }else{ exit('仅允许上传zip、jpg、gif、png文件!'); } }

既然有代码,自然要好好的研究一番,譬如,上传文件不能为空(这不废话吗?)。通过后续代码可知该上传采用的是白名单的过虑形式,且仅接受“.zip;.jpg;.gif;.png”格式的文件。上传文件的路径为"/upload",上传后的文件名采用“时间+随机数”的方式进行的。

因此,尝试着访问了一下upload页面:

呃。。。404???莫不是没上传就没有创建目录?

彳亍口八!

那就先上传一个图片试试。

i春秋-CTF-web文件上传_第4张图片

 果然。。。

既然文件目录已经存在了,现在就要思考文件上传漏洞的“各种绕过姿势”——后缀名、上传类型、%00截断等。

于是打开“吃饭神器”,啊不,抓包神器——BURPSUITE。对上传界面进行抓包,发送到repeater里面(主要是懒得总抓包)。

正片开始

首先写个php一句话:

 再用mspaint画个简单的图片。

用copy命令做个图片马。

copy pic.gif /b + shell.php /a picshell

上传,抓包,访问,呃。。。怎么没解析?

i春秋-CTF-web文件上传_第5张图片

 i春秋-CTF-web文件上传_第6张图片

 于是只好盯着Apache发呆,等等!Apache有个文件名后缀来着???

重新上传,抓包,访问,搞定!

i春秋-CTF-web文件上传_第7张图片

 后记:

虽然拿到了FLAG,但是为什么蚁剑连接不上呢????

你可能感兴趣的:(I春秋CTF训练营,web安全)