웹해킹 webhacking.kr Lv.6 / 6번 / - (cookie 편집, 암호화, 복호화)
http://webhacking.kr/challenge/web/web-06/
6번 문제를 풀어봅시다.
6번문제에 접속 하면 아래와 같은 화면을 보게 됩니다.
무슨 내용인지 모르니 소스를 보도록 합시다. (Chorme 기준, 우측 클릭 후 페이지 소스 보기)
소스보기를 누르면 아래와 같은 코드가 보입니다.
index.phps 에 소스 내용이 있는듯 합니다.
webhacking.kr/challenge/web/web-06/index.phps 에 접속하여 소스를 보도록 합시다.
소스는 아래와 같습니다.
<html>
<head>
<title>Challenge 6</title>
</head>
<body>
<?
if(!$_COOKIE[user])
{
$val_id="guest";
$val_pw="123qwe";
for($i=0;$i<20;$i++)
{
$val_id=base64_encode($val_id);
$val_pw=base64_encode($val_pw);
}
$val_id=str_replace("1","!",$val_id);
$val_id=str_replace("2","@",$val_id);
$val_id=str_replace("3","$",$val_id);
$val_id=str_replace("4","^",$val_id);
$val_id=str_replace("5","&",$val_id);
$val_id=str_replace("6","*",$val_id);
$val_id=str_replace("7","(",$val_id);
$val_id=str_replace("8",")",$val_id);
$val_pw=str_replace("1","!",$val_pw);
$val_pw=str_replace("2","@",$val_pw);
$val_pw=str_replace("3","$",$val_pw);
$val_pw=str_replace("4","^",$val_pw);
$val_pw=str_replace("5","&",$val_pw);
$val_pw=str_replace("6","*",$val_pw);
$val_pw=str_replace("7","(",$val_pw);
$val_pw=str_replace("8",")",$val_pw);
Setcookie("user",$val_id);
Setcookie("password",$val_pw);
echo("<meta http-equiv=refresh content=0>");
}
?>
<html>
<head>
<title>Challenge 6</title>
</head>
<body>
<?
$decode_id=$_COOKIE[user];
$decode_pw=$_COOKIE[password];
$decode_id=str_replace("!","1",$decode_id);
$decode_id=str_replace("@","2",$decode_id);
$decode_id=str_replace("$","3",$decode_id);
$decode_id=str_replace("^","4",$decode_id);
$decode_id=str_replace("&","5",$decode_id);
$decode_id=str_replace("*","6",$decode_id);
$decode_id=str_replace("(","7",$decode_id);
$decode_id=str_replace(")","8",$decode_id);
$decode_pw=str_replace("!","1",$decode_pw);
$decode_pw=str_replace("@","2",$decode_pw);
$decode_pw=str_replace("$","3",$decode_pw);
$decode_pw=str_replace("^","4",$decode_pw);
$decode_pw=str_replace("&","5",$decode_pw);
$decode_pw=str_replace("*","6",$decode_pw);
$decode_pw=str_replace("(","7",$decode_pw);
$decode_pw=str_replace(")","8",$decode_pw);
for($i=0;$i<20;$i++)
{
$decode_id=base64_decode($decode_id);
$decode_pw=base64_decode($decode_pw);
}
echo("ID : $decode_id<br>");
echo("PW : $decode_pw<br>");
if($decode_id=="admin" && $decode_pw=="admin")
{
@solve();
}
?>
<!--
index.phps
-->
</body>
</html>
1,2,3,4,5,6,7,8,9,0 을 각 !,@,#,$,%,^,&,*,(,) 으로 치환한 후 base64 방식으로 20번 인코딩 한다고 되어있습니다.
실제로, 화면의 id와 pw 의 내용을 20번 디코딩 해 보면 화면에 있는 user와 password쿠키의 내용이 보여집니다.
@solve 는 id와 pw가 admin이 되면 실행됩니다.
'Study-security > Web-Hack' 카테고리의 다른 글
웹해킹 webhacking.kr Lv.5 / 5번 / - (소스보기, 복합) (0) | 2013.07.07 |
---|---|
웹해킹 webhacking.kr Lv.58 / 58번 / - (디컴파일) (0) | 2013.07.07 |
웹해킹 webhacking.kr Lv.15 / 15번 / - (소스보기) (3) | 2013.07.06 |
웹해킹 webhacking.kr Lv.1 / 1번 /- (cookie 편집) (0) | 2013.07.06 |
웹해킹 webhacking.kr Lv.0 - 가입 (복호화) (0) | 2013.07.01 |