[WARGAME] 드림핵 워게임 - Apache htaccess

jckim22·2022년 11월 12일
0

[WEBHACKING] STUDY (WARGAME)

목록 보기
64/114

아래는 서버 코드이다.

upload.php만 보자

<?php
$deniedExts = array("php", "php3", "php4", "php5", "pht", "phtml");

if (isset($_FILES)) {
    $file = $_FILES["file"];
    $error = $file["error"];
    $name = $file["name"];
    $tmp_name = $file["tmp_name"];
   
    if ( $error > 0 ) {
        echo "Error: " . $error . "<br>";
    }else {
        $temp = explode(".", $name);
        $extension = end($temp);
       
        if(in_array($extension, $deniedExts)){
            die($extension . " extension file is not allowed to upload ! ");
        }else{
            move_uploaded_file($tmp_name, "upload/" . $name);
            echo "Stored in: <a href='/upload/{$name}'>/upload/{$name}</a>";
        }
    }t
}else {
    echo "File is not selected";
}
?>

코드를 보니 확장자명이 php와 관련 되어 있는 것은 다 필터링 하는 것을 볼 수 있다.
웹쉘을 업로드 하지 못하게 하려고 그러는 것 같다.

하지만 운이 좋게도 강의에서 배운 내용이 떠올랐다.
apache에서 .htaccess라는 설정 파일이 존재하고 그 파일 내에 jpg같은 확장자도 php로 인식하게 해준다는 설정이 있었던 것 같았다.

그래서 다시 공부한 내용을 보고 .htaccess를 내 로컬에서 생성했다.

그리고 그 설정 내용은 앞서 공부한 내용에서 알아왔다.

AddType application/x-httpd-php .txt

위와 같이 설정하면 이제 .txt파일로 업로드 되는 파일은 php파일로 인식해준다,

아래처럼 파일을 세팅하고

아래와 같이 업로드한다.
그럼 이제 .htaccess 설정파일로 인해서 아파치 서버에서는 .txt파일의 확장자 명으로 업로드 된 파일을 php로 인식하게 된다.

이제 아래의 저번에 만들어 놨던 웹쉘 파일을 가져와서 업로드 해보자

.txt파일로 아래처럼 파일을 만들고

업로드에 성공한다.

그럼 아래와 같이 apache서버에서 .txt파일 .php파일로 인식해서 웹 쉘이 성공적으로 실행된다.

이번에 역시 flag는 파일이므로 flag를 실행시켜서 flag를 얻을 수 있다.

profile
개발/보안

0개의 댓글