목표 : SMTP 헤더 조작
메일 제목을 작성하고 발송하는 페이지다.
<html>
<head>
<title>Challenge 47</title>
</head>
<body>
<form method=post name=mailfrm>
Mail subject : <input type=text name=subject size=50 value="Flag of webhacking.kr old-47 chall" maxlength=50><input type=submit value=send>
</form>
<hr>Mail has been sent<hr>
PHP
복사
코드를 보니 post로 메일을 보낸다.
별 다른 값은 보이지 않는다.
이메일과 subject라는 태그를 통해 SMTP 통신을 한다고 생각할 수 있다.
대충 이런 구조를 가지고 있을 거다.
From: "admin@webhacking.kr" <admin@webhacking.kr>
To: "admin2@webhacking.kr" <admin2@webhacking.kr>
Message-ID: <02323113....admin@webhacking.kr>
Date : 5 Mar 2023 23:10:55 +0000
Subject : Flag of webhacking..kr old-47 chall
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=047d7b6d908a020e4004e2ceb1a8
PHP
복사
수신 외에도 메일은 참조와 숨은 참조로 발송이 가능하다.
각각에 대한 태그는 다음과 같다
참조 Carbon Copy Cc:
숨은 참조 Blind Carbon Copy BCc:
SMTP는 헤더를 \r\n 즉 줄바꿈으로 구분한다.
줄바꿈을 위해 입력 칸을 textarea로 바꿔 줄바꿈이 가능하도록 한다.
처음에는 작동이 안됐다.
Cc: 에서 콜론 뒤에 한 칸을 꼭 띄워줘야 한다.
플래그가 나온다
추가정보
조작이 불가능한 SMTP 헤더 값
•
메일 전달 경로 Received:
•
메시지 아이디 Message-ID:
•
날짜 Date:
•
멀티미디어 메일 헤더 MIME-Version:
•
본문 형식 Content-Type:
•
나중에 참조할만한 헤더 값
•
회신주소 Reply-To:
이걸 조작해서 메일 답장을 받는 문제도 분명 나올 것이기에 미리 작성해둔다.