nghiên cứu ASIS để trở thành một hắc cơ vipro :V

binary cloud

https://www.gosecure.net/blog/2016/04/27/binary-webshell-through-opcache-in-php-7/

https://ctf.rip/asis-ctf-2016-binarycloud-web-challenge/

https://systemoverlord.com/2016/05/08/asis-ctf-2016-binary-cloud.html

<?php

function ew($haystack, $needle) {
    return $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== false);
}

function filter_directory(){
    $data = parse_url($_SERVER['REQUEST_URI']);
    $filter = ["cache", "binarycloud"];
    foreach($filter as $f){
        if(preg_match("/".$f."/i", $data['query'])){
            die("Attack Detected");
        }
    }
}

function error($msg){
    die("<script>alert('$msg');history.go(-1);</script>");
}

filter_directory();

if($_SERVER['QUERY_STRING'] && $_FILES['file']['name']){
    if(!file_exists($_SERVER['QUERY_STRING'])) error("error3");
    $name = preg_replace("/[^a-zA-Z0-9\.]/", "", basename($_FILES['file']['name']));
        if(ew($name, ".php")) error("error");
    $filename = $_SERVER['QUERY_STRING'] . "/" . $name;
    if(file_exists($filename)) error("exists");
    if (move_uploaded_file($_FILES['file']['tmp_name'], $filename)){
        die("uploaded at <a href=$filename>$filename</a><hr><a href='javascript:history.go(-1);'>Back</a>");
    }else{
        error("error");
    }
}

?>
    <hr>
    <form action="upload.php?uploads" enctype="multipart/form-data" method="post">
        <p>Please specify the file to upload!</p>
        <input class="form-control" type="file" name="file"><br>
        <input class="form-control" type="submit" value="Upload!">
    </form>

Nhận xét

Bài đăng phổ biến từ blog này

KMACTF và nỗi buồn éo làm được gì cả T__T