본문 바로가기

웹해킹/DVWA

DVWA File Upload(medium)

<?php

if( isset( $_POST[ 'Upload' ] ) ) {
    // Where are we going to be writing to?
    $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
    $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );

    // File information
    $uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
    $uploaded_type = $_FILES[ 'uploaded' ][ 'type' ];
    $uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];

    // Is it an image?
    if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
        ( $uploaded_size < 100000 ) ) {

        // Can we move the file to the upload folder?
        if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
            // No
            echo '<pre>Your image was not uploaded.</pre>';
        }
        else {
            // Yes!
            echo "<pre>{$target_path} succesfully uploaded!</pre>";
        }
    }
    else {
        // Invalid file
        echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
    }
}

?>

구성 코드이다.

low 레벨에서는 검사하지 않았던 파일 형식을 검사하며 jpeg와 png 파일만 업로드할 수 있게 만들었다.

파일을 전송할 때 type을 변조해서 요청을 보내야 할 거 같아서 burp suite를 이용하였다.

 

low레벨 실습 때 만들어 두었던 shell.php 파일을 선택하고

burp suite에서 intercept on을 누른 뒤 upload를 한다.

이렇게 패킷 정보를 확인할 수 있는데

content-type이 application/octet-stream으로 되어있다.

이 정보를 image/jpeg로 바꿔주고 forward로 요청을 보내면

이렇게 파일이 잘 저장되었다고 뜬다.

shell을 얻는데 성공했다.

'웹해킹 > DVWA' 카테고리의 다른 글

DVWA SQL Injection(medium) 롸업  (0) 2023.11.15
DVWA Insecure CAPTCHA(medium) 롸업  (0) 2023.11.14
DVWA File Inclusion(medium) 롸업  (0) 2023.11.14
DVWA CSRF(medium) 롸업  (0) 2023.11.13
DVWA Command Injection(medium) 롸업  (0) 2023.11.13