level6[old]

2022. 3. 25. 04:24Site/Webhacking.kr

이번시간에는 level6을 풀어보겠습니다

공부를 하는 입장이니 틀린것이 있더라도 양해부탁드리겠습니다


처음들어가니 ID : guest, PW : 123qwe정보가 나와있었습니다

일단은 저건만보고 모르겠으니 view-source를 눌러 소스코드를 확인했습니다

 

소스코드가 엄청 기네요...

일단 최대한 아는 부분까지 해석을 해보겠습니다

 

<?php
include "../../config.php";
if(
$_GET['view_source']) view_source();
if(!
$_COOKIE['user']){ //user쿠키값이 없다면
  
$val_id="guest"; //val_id를 guset로
  
$val_pw="123qwe"; //val_pw를 123qwe로
  for(
$i=0;$i<20;$i++){ //20번 반복
    
$val_id=base64_encode($val_id); //val_id를 base64로 encode
    
$val_pw=base64_encode($val_pw); //val_pw를 base64로 encode
  }
  
$val_id=str_replace("1","!",$val_id); //1->!
  
$val_id=str_replace("2","@",$val_id); //2->@
  
$val_id=str_replace("3","$",$val_id); //3->$
  
$val_id=str_replace("4","^",$val_id); //4->^
  
$val_id=str_replace("5","&",$val_id); //5->&
  
$val_id=str_replace("6","*",$val_id); //6->*
  
$val_id=str_replace("7","(",$val_id); //7->(
  
$val_id=str_replace("8",")",$val_id); //8->)

  
$val_pw=str_replace("1","!",$val_pw); //1->!
  
$val_pw=str_replace("2","@",$val_pw); //2->@
  
$val_pw=str_replace("3","$",$val_pw); //3->$
  
$val_pw=str_replace("4","^",$val_pw); //4->^
  
$val_pw=str_replace("5","&",$val_pw); //5->&
  
$val_pw=str_replace("6","*",$val_pw); //6->*
  
$val_pw=str_replace("7","(",$val_pw); //7->(
  
$val_pw=str_replace("8",")",$val_pw); //8->)

  
Setcookie("user",$val_id,time()+86400,"/challenge/web-06/"); // 위에서 치환된 val_id를 user에 저장하여 쿠키값지정
  
Setcookie("password",$val_pw,time()+86400,"/challenge/web-06/"); //위에서 치환된 val_pw를 password에 저장하여 쿠키값지정
  echo(
"<meta http-equiv=refresh content=0>");
  exit;
}
?>
<html>
<head>
<title>Challenge 6</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
</style>
</head>
<body>
<?php
$decode_id
=$_COOKIE['user']; //user 쿠키값을 decode_id에 저장
$decode_pw=$_COOKIE['password']; //password 쿠키값을 decode_pw에 저장

$decode_id=str_replace("!","1",$decode_id); //!->1
$decode_id=str_replace("@","2",$decode_id); //@->2
$decode_id=str_replace("$","3",$decode_id); //$->3
$decode_id=str_replace("^","4",$decode_id); //^->4
$decode_id=str_replace("&","5",$decode_id); //&->5
$decode_id=str_replace("*","6",$decode_id); //*->6
$decode_id=str_replace("(","7",$decode_id); //(->7
$decode_id=str_replace(")","8",$decode_id); //)->8

$decode_pw=str_replace("!","1",$decode_pw);  //!->1
$decode_pw=str_replace("@","2",$decode_pw); //@->2
$decode_pw=str_replace("$","3",$decode_pw); //$->3
$decode_pw=str_replace("^","4",$decode_pw); //^->4
$decode_pw=str_replace("&","5",$decode_pw); //&->5
$decode_pw=str_replace("*","6",$decode_pw);  //*->6
$decode_pw=str_replace("(","7",$decode_pw); //(->7
$decode_pw=str_replace(")","8",$decode_pw); //)->8

for(
$i=0;$i<20;$i++){ //20번 반복
  
$decode_id=base64_decode($decode_id); //base64로 디코드된 decode_id값을 decode_id값에 저장
  
$decode_pw=base64_decode($decode_pw); //base64로 디코드된 decode_pw값을 decode_pw값에 저장
}

echo(
"<hr><a href=./?view_source=1 style=color:yellow;>view-source</a><br><br>");
echo(
"ID : $decode_id<br>PW : $decode_pw<hr>"); //decode_id, decode_pw 출력

if(
$decode_id=="admin" && $decode_pw=="nimda"){ //decode_id가 admin, decode_pw가 nimda이면은
  
solve(6); //클리어
}
?>
</body>
</html>

 

 

일단 첫화면에 보였던 guest와 123qwe는 user쿠키값을 초기화할때 나온 값인것 같고

각각 20번씩 반복하면서 val_id, val_pw는 인코딩, decode_id, decode_pw는 디코딩하네요....

 

핵심은 이부분인것같은데 id가 admin이어야 되고 pw가 nimda여야 됩니다

결론 -> admin, nimda를 각각 20번 인코딩한 값을 user와 password쿠키에 넣어주면 밑에서 20번 다시 디코딩되어 admin, nimda를 출력하여 클리어할수있을것 같습니다

 

burp suit decoder기능을 활용해서 20번 인코딩해주었습니다

cf) burp suit는 웹해킹을 할때 활용하기 좋은 tool인데 이제알아서 좀 아쉽네요... 이 tool에 대해서는 조만간 자세히 정리할생각입니다...

user에 인코딩한 값을 넣어주니 ID가 admin으로 변경되었습니다

동일하게 nimda도 20번 인코딩 하였습니다

password쿠키값에 넣어주니

pw도 nimda로 바뀌며 클리어 되었습니다

'Site > Webhacking.kr' 카테고리의 다른 글

level42  (0) 2022.03.28
level32  (0) 2022.03.28
level54[old]  (0) 2022.03.24
level36[old]  (0) 2022.03.24
level38[old]  (0) 2022.03.24