Mail Header injection
*서버문제로 mail함수는 주석처리 해놓은 상태이며 취약점을 공략할 수 있는 구문을 입력했을 때
정답이 출력되도록 하드코딩 해놨습니다.
소스코드는 다음과 같다.
<html> | |
<head> | |
<title>Challenge 47</title> | |
</head> | |
<body> | |
Mail Header injection | |
<pre> | |
*서버문제로 mail함수는 주석처리 해놓은 상태이며 취약점을 공략할 수 있는 구문을 입력했을 때<br> | |
정답이 출력되도록 하드코딩 해놨습니다. | |
<br><br> | |
<form method=post action=index.php name=mailfrm> | |
<font size=2>Mail</font> : <input type=text name=email size=50 style=border:0 maxlength=50><input type=submit> | |
</form> | |
</pre> | |
<!-- index.phps --> | |
</body> | |
</html> 주석처리 된 index.phps에 들어가보자! |
<html>
<head>
<title>Challenge 47</title>
</head>
<body>
Mail Header injection
<pre>
<form method=post action=index.php>
<font size=2>Mail</font> : <input type=text name=email size=50 style=border:0 maxlength=50><input type=submit>
</form>
<?
if($_POST[email])
{
$pass="????";
$header="From: $_POST[email]\r\n";
mail("admin@webhacking.kr","readme","password is $pass",$header);
echo("<script>alert('Done');</script><meta http-equiv=refresh content=1>");
}
?>
</pre>
<!-- index.phps -->
</body>
</html>
mail($to,$subject,$txt,$headers);
mail("admin@webhacking.kr","readme","password is $pass",$header);
subject-> readme
txt-> password is $pass
headers-> $header -> From: $_POST[email]\r\n
메일 보낼때 admin@hacking.kr로 보내지기 때문에 패스워드를 알 수 없다!
따라서
CC(참조)를 이용해주어야 한다!
다음과 같이 cc를 추가해서 보내면
$header="From: $_POST[email]\r\n";
mail("admin@webhacking.kr","readme","password is $pass",$header);
참조받은 사람도 메일을 받을 수 있다!
Password is 743903a5f0f2967570f67b6601b3974d
*cc와 bcc의 차이
cc: 참조 ->받은 사람의 화면에도 참조 주소가 노출된다., 참조된 사람의 화면에도 메일 받는 사람이 노출된다. 주소가 서로에게 노출되는 것이다.
bcc: 숨은 참조-> 받는 사람은 숨은 참조는 보이지 않는다. 참조인의 화면에도 숨은 참조는 보이지 않는다. 숨은 참조인의화면에는 보내는 사람, 받는 사람, 참조인의 정보를 모두 확인할 수 있다.
'웹 해킹 > webhacking.kr' 카테고리의 다른 글
webhacking.kr 23번-XSS (0) | 2018.02.10 |
---|---|
webhacking.kr 20번 (0) | 2018.02.10 |
webhacking.kr 58번 (0) | 2018.02.10 |
webhacking.kr 32번-파이썬 스크립트 (0) | 2018.02.10 |
webhacking.kr 31번-포트포워딩 (0) | 2018.02.09 |