강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

Phân tích các kỹ thuật tấn công vào lỗ hổng khi tải tệp lên và các trường hợp thực tế được giảng dạy bởi một học viên hack giả: PHẦN 1

[Thực hành 4-6] Thực hành kỹ thuật bỏ qua logic xác minh trong các môi trường khác nhau bằng cách sử dụng ký tự Null Byte

49 강좌 null byte 3번째 입력관련 문의

Đã giải quyết

Viết

·

45

·

Đã chỉnh sửa

0

안녕하세요 아래 강좌를 듣고 있습니다^^

49. [실습4-6] Null Byte 문자를 통한 다양한 환경에서의 검증 로직 우회 기법 실습

의 17:00 의 강좌를 보면

null byte 를 cookie 헤더값에 수정하여

test.php(null) 을 보내서 스크립트를 실행할 수 있도록 강좌에는 진행되고 있습니다.

 

하지만, 제가 실행하는 코드 및 버프스위트에서는 마지막 쿠키 헤더에만 null 값이 계속 들어가지지 않고 있어서 혹시 제가 무언가 실수한 부분이 있는지 문의드립니다^^;

 

 

index.php

<?
    header("content-type: text/html; charset=UTF-8");
    setcookie("gubun", "file");
?>

<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="userfile">
<input type="submit" value="UPLOAD">
</form>

 

 

upload.php

<?
    header("Content-Type: text/html; charset=UTF-8");

    $gubun = $_COOKIE["gubun"];
    if(empty($_FILES["userfile"]["name"])) {
        echo "<script>alert('파일을 업로드하세요!');history.back(-1);</script>";
        exit();
    }

    $path = "./upload/";
    $filename = $gubun."_".$_FILES["userfile"]["name"];

    $file_info = pathinfo($path.$filename);
    $ext = strtolower($file_info["extension"]); //업로드 되는 파일의 확장자는 모든것을 소문자로 변환해주겠다.
   
    $ext_arr = array("php", "php3", "php5");

    if(in_array($ext, $ext_arr)) {
        echo "<script>alert('허용되지 않은 확장자입니다.');history.back(-1);</script>";
        exit();
    }

    if(!move_uploaded_file($_FILES["userfile"]["tmp_name"], $path.$filename)) {
        echo "<script>alert('파일을 업로드에 실패하였습니다.');history.back(-1);</script>";
        exit();
    }
?>

<li>업로드 성공 : <?=$path.$filename?></li>

 

버프스위트에서 repaet 에 계속 널바이트가 넘어오지 않아서 아래 구문을 추가해서 실행해보았는데도 null 이 적용되지 않고 있습니다.

 

    var_dump($_COOKIE["gubun"]);
    echo "HEX: " . bin2hex($_COOKIE["gubun"]);
    exit();

 

 

버프스위트 실행화면 (hex값 확인)

image.png

 

 

버프스위트 실행화면 ( null 적용 안됨 )

image.png

 

모의해킹

Câu trả lời 2

0

원인을 찾았습니다.

body 에 디코딩하던 방식을

쿠키에서 %00 이 아닌 디코딩으로 넣다보니 안되는 문제였습니다. 감사합니다^^

0

안녕하세요, 인프런 AI 인턴입니다. 몽상가님.

현재 질문 주신 내용은 Null Byte를 활용한 URL 또는 쿠키 변조의 문제로 보입니다. 질문 주신 버프스위트와 쿠키 처리 방식에서 Null Byte가 의도한 대로 적용되지 않는 것 같군요. 이 문제는 시스템의 버전 차이나 PHP 설정에 따라 다르게 작동할 수 있습니다.

  1. 버프스위트 사용 방식: 버프스위트를 통한 요청 시, 헤더의 특정 값에 Null Byte를 설정할 때 일부 구성 요소 또는 네트워크 장비가 이 값을 무시하거나 제거할 수 있습니다. 이는 엔트로피를 줄이고 보안을 높이기 위한 설정 때문일 수 있습니다.

  2. PHP 버전 및 설정 관련 문제: 최신 PHP 버전에서는 Null Byte 처리가 다르게 이루어질 수 있습니다. 예를 들어, magic_quotes_gpc 설정이 있다면 Null Byte가 인식되지 않을 수도 있습니다. 해당 설정값을 Off로 설정해 보시길 권장드립니다. 이는 이전 질문 중 하나에서도 다루어졌습니다.

  3. 설치 환경의 차이: APM, XAMPP, 또는 비트나미와 같은 서버 구성을 사용할 때 설정 차이가 생길 수 있습니다. 특히, 특정 버전이나 플랫폼은 보안 처리를 강화하기 위해 Null Byte 인식 방법이 다를 수 있습니다.

관련하여 도움이 될만한 질문 및 답변 링크를 제공드리겠습니다:
- NULL 바이트 질문 드립니다. - Magic quotes 설정과 관련된 문제 해결 사례
- bitnami 사용중인데 널바이트 입력 시 fatal error가 발생합니다 - 설치 환경의 특성과 Null Byte 처리를 설명한 사례

위 내용을 참고하시고, 추가적인 실험이나 설정 수정을 통해 문제를 해결해 보실 수 있을 것입니다. 만약 추가적으로 궁금한 점이 있으시면 언제든지 질문해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

Đặt câu hỏi