본문 바로가기
워게임/natas

[natas - WEB hacking] level12 -> leve13

by B T Y 2017. 10. 8.
반응형

[natas - WEB hacking] level12 -> leve13





[ 풀이과정 ]


이 문제도 페이지를 접속하니 natas12와 비슷하게 생긴 파일 업로드 페이지가 나왔다..

'For security reasons, we now only accept image files!'라는 문구가 있어서

구글 번역기를 돌려보니 '보안상의 이유로 이미지 파일만 허용한다'고 나와있었다.


jpg 파일을 업로드 해보니 업로드가 될때가 있고 안될때가 있었다..





우선 소스 코드를 분석해보기 위해서 코드를 보니까 natas12에서 봤던 코드와 거의 유사한 형태였다..



    else if (! exif_imagetype($_FILES['uploadedfile']['tmp_name'])) { 

        echo "File is not an image"; 


이 코드가 들어갔다는것 외에는 natas12와 동일했다..

exif_imagetype()이라는 함수가 어떤걸 하는건지 찾아보니 해당 파일의 첫번째 바이트를 읽어서

서명을 검사한다고 나와있었다. 즉, 파일 시그니처를 검사 하는게 아닐까 싶다..


이 문제에서도 burp suite를 이용해서 문제를 풀어낼수 있을거 같다..


여기서도 natas14의 패스워드를 알아내기 위한 간단한 php 코드를 작성했다.


passthru() 함수를 이용해서 "cat /etc/natas_webpass/natas14"를 작성해주고

hex editor를 이용해서 php파일의 파일 시그니처를 jpg로 바꾸기 위해서 미리 앞에 엔터를 6번정도 입력해놨다...


그리고 hexeditor를 이용해서 jpg의 파일 시그니처인 FF D8 FF E0를 넣어주고 저장하며 

해당 파일은 exif_imagetype() 함수를 통과할때 jpg 파일로 인식이 될수 있다..





이제 해당 파일을 업로드할때 확장자가 '.jpg'로 고정이 되어있기 때문에 burp suite를 이용해서

파일 확장자만 바꿔주게 되면 natas14의 패스워드를 찾을수 있다.





burp suite를 이용해서 패킷을 잡아서 .jpg로 고정되어있는 확장자를 .php로 바꿔줘서 

.php코드가 실행되 natas14의 패스워드를 찾을 수 있도록 만든다...







.php 확장자로 파일이 업로드 된게 확인이 됬고 이제 해당 경로로 아까와 같이 접근하기만 하면

natas14의 패스워드를 알아낼수 있다...








Lg96M10TdfaPyVBkJdjymbllQ5L6qdl1






반응형

댓글