Wargame/Webhacking.kr

webhacking.kr - old 47

G_OM 2024. 3. 28. 15:59

 

문제화면이다.

 

send를 누르자 메일을 보냈다고 만 뜬다.

 

실제 이메일을 대입해서 시도했지만 실제로는 되지 않았다.

 

일단 지금 알 수 있는 건 Mail에 관련된 프로토콜 SMTP 밖에 떠오르지 않았다.

 

(다른 것도 찾아봤지만 별 의미 없었다..)

 

패킷도 잡아봤지만 의미 있는 걸 발견하기가 힘들었다.

 

구글링을 더 해본 결과..(그것도 많이)

 

계속하다가 SMTP Header Injection이라는 연관성 있는 키워드가 떠서 확인해 봤다.

 

내용은 사용자 입력이 충분히 검증되지 않은 채 전자 메일을 보낼 수 있을 때 추가 헤더를 삽입하여 임의의 값으로 조작할 수 있게 된다고 쓰여있다. (요약)

 

지금 문제하고 되게 비슷한 상황인 거 같다.

 

입력에 대한 검증은 이루어지지 않고 있고 애초에 워게임 사이트 문제이니 추가 헤더 삽입은 injection이라는 소리인데..

 

일단 문제 SMTP 가 어떻게 작동하는지부터 알아보자.

 

 

 

 

 

<?php
$sender_email = 'webhacking@webhacking.com';
$Mailsubject = 'Flag of webhacking.kr old-47 chall';
$headers = 'From: '.$sender_email. "\r\n" .
           'Subject'.$Mailsubject. "\r\n" ;
?>

 

 

대충 이런 코드가 있지 않을까 똑같다 이 정도는 못 추리니..

 

일단 문제에서는 메일이 정상적으로 작동되지는 않으니 따로 메일 전송 코드는 없을 거 같다.

 

다시 보니 From 부분도 필요 없어 보인다.

 

아니면 말고

 

일단 SMTP는 "\r\n"으로 줄 바꿈을 하고 있는 게 보인다. 

 

저 줄 바꿈을 이용해서 flag를 하나는 원래 'flag of web~' 여기다가 보내고 하나는 나한테 보내게 하는 것이다.

 

아마 이메일이 전송이 안되니 적당한 이메일 주소를 기입하면 될 거 같다.

 

 

 

 

 

 

 

 

 

 

 

먼저 'input'으로 이루어진 태그를 'textarea'를 이용해서 'subject'에 줄 바꿈을 편하게 할 수 있게 만들자.

 

 

 

 

 

 

 

 

 

 

 

 

 

그다음 flag 값을 mail에 포함시켜달라 하고 'Cc: '[띄어쓰기 꼭 하자]를 이용해서 이메일? 을 받아보자.

 

적당한 이메일 주소 써주고~

 

Cc(Carbon Copy): 이메일의 복사본을 해당 수신자에게 보내는데 사용 [원래는 여러 수신자에게 보낼때 사용되는 필드이다]

 

 

쉽게 말해 다중으로 이메일을 보낸다고 알면 될 거 같다.