티스토리 뷰
47단계의 초기화면
주석처리되어 잇는 index.phps가 힌트인 것 같다.
index.phps로 들어가면 소스코드가 나온다. POST방식으로 전달받은 "email"이 존재하는 경우 if안의 내용이 실행되도록 구성되어 있다.
mail()함수는 이메일을 보내는 함수이다.
mail(받는 사람 주소, 제목, 내용, 이메일 헤더(참조)<생략가능>)
위 코드는 email의 값을 POST방식으로 전달하면
받는이 : admin@webhacking.kr
제목 : readme
내용 : password is $pass
헤더(참조) : From : [폼에 입력한 문자열]
와 같은 이메일을 보내게 된다.
이 이메일에는 password정보가 담겨있다.
그러나 이 메일을 받는사람은 admin@webhacking.kr 뿐이므로 나는 내용을 확인할 수 없다.
패스워드를 확인하기 위해서는 나도 이 메일의 수신자가 될 수 있어야 한다.
이 프로그램에서 내가 조작할 수 있는 값은 네번째 인자인 이메일 헤더가 유일하다.
이 부분에는 To, From, Cc, Bcc등의 내용이 들어가게 된다.
to -> 받는이를 설정
from -> 보낸이를 설정
cc -> 함께 메일을 수신하는 대상 설정
bcc -> 함께 메일을 수신하는 대상 설정
cc와 bcc의 차이점은 다음과 같다.
cc(참조) -> 수신자가 함께 메일을 수신한 참조인의 정보(메일 주소)를 알 수 있다.
bcc(숨은참조) -> 수신자는 함께 메일을 수신한 참조인의 정보(메일 주소)를 알 수 없다.
이중에서 cc를 이용하면 나도 메일의 수신자가 될 수 있다.
방법1
sender%0D%0Acc:user@naver.com을 입력하고 제출을 누르면 다음과 같은 헤더부분이 포함된 이메일이 전송된다.
From:sender
cc:user@naver.com
---참고---
%0D == \r
%0A == \n
그러나 서버상의 문제로 인해 위의 문장은 먹히지 않는다. 따라서 burp suite를 이용하여(방법2) POST값을 직접 입력한 후 전송하면 된다.
방법2
Burp Suite를 이용해서 "email"을 다음과 같이 변경시킨 후 전송하면 다음과 같은 헤더부분이 포함된 메일이 전송된다.
From:sender -> 보내는이
cc:user@naver.com -> 나의 메일주소(참조인이므로 메일을 받게됨)
서버상의 문제로 주석처리후 하드코딩 했기때문에 실제로 메일이 전송되지는 않고 그대신 패스워드가 화면에 바로 나타난다.
클리어
'hacking > webhacking.kr' 카테고리의 다른 글
<webhacking.kr> - 42번 (0) | 2018.02.01 |
---|---|
<webhacking.kr> - 25번 (0) | 2018.02.01 |
<webhacking.kr> - 38번 (0) | 2018.01.31 |
<webhacking.kr> - 26번 (0) | 2018.01.26 |
<webhacking.kr> - 24번 (0) | 2018.01.26 |