작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
9
·
수정됨
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값 확인)
버프스위트 실행화면 ( null 적용 안됨 )
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 몽상가님.
현재 질문 주신 내용은 Null Byte를 활용한 URL 또는 쿠키 변조의 문제로 보입니다. 질문 주신 버프스위트와 쿠키 처리 방식에서 Null Byte가 의도한 대로 적용되지 않는 것 같군요. 이 문제는 시스템의 버전 차이나 PHP 설정에 따라 다르게 작동할 수 있습니다.
버프스위트 사용 방식: 버프스위트를 통한 요청 시, 헤더의 특정 값에 Null Byte를 설정할 때 일부 구성 요소 또는 네트워크 장비가 이 값을 무시하거나 제거할 수 있습니다. 이는 엔트로피를 줄이고 보안을 높이기 위한 설정 때문일 수 있습니다.
PHP 버전 및 설정 관련 문제: 최신 PHP 버전에서는 Null Byte 처리가 다르게 이루어질 수 있습니다. 예를 들어, magic_quotes_gpc 설정이 있다면 Null Byte가 인식되지 않을 수도 있습니다. 해당 설정값을 Off로 설정해 보시길 권장드립니다. 이는 이전 질문 중 하나에서도 다루어졌습니다.
설치 환경의 차이: APM, XAMPP, 또는 비트나미와 같은 서버 구성을 사용할 때 설정 차이가 생길 수 있습니다. 특히, 특정 버전이나 플랫폼은 보안 처리를 강화하기 위해 Null Byte 인식 방법이 다를 수 있습니다.
관련하여 도움이 될만한 질문 및 답변 링크를 제공드리겠습니다:
- NULL 바이트 질문 드립니다. - Magic quotes 설정과 관련된 문제 해결 사례
- bitnami 사용중인데 널바이트 입력 시 fatal error가 발생합니다 - 설치 환경의 특성과 Null Byte 처리를 설명한 사례
위 내용을 참고하시고, 추가적인 실험이나 설정 수정을 통해 문제를 해결해 보실 수 있을 것입니다. 만약 추가적으로 궁금한 점이 있으시면 언제든지 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.