본문 바로가기
웹 해킹/Webhacking.kr

[Webhacking.kr] old-06

by L3m0n S0ju 2021. 8. 27.

 

 

 

 

문제 서버에 접속하면 위와 같이 ID와 PW가 출력된다. 소스코드는 아래와 같다.

 

 

 

 

 


<?php
include "../../config.php";
if(
$_GET['view_source']) view_source();
if(!
$_COOKIE['user']){ // 쿠키에 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,time()+86400,"/challenge/web-06/");
  
Setcookie("password",$val_pw,time()+86400,"/challenge/web-06/");
  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'];
$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(
"<hr><a href=./?view_source=1 style=color:yellow;>view-source</a><br><br>");
echo(
"ID : $decode_id<br>PW : $decode_pw<hr>");

if(
$decode_id=="admin" && $decode_pw=="nimda"){
  
solve(6);
}
?>
</body>
</html>

 

 

 

 


소스코드는 간단하다. 쿠키값에 user 변수가 없다면 "guest", "123qwe"를 base64로 인코딩을 20번하고 특수문자를 다른 문자로 치환한다음 쿠키값에 저장한다. 그리고 쿠키 값에 있는 값을 다시 디코딩한다. 따라서 admin과 nimda를 인코딩한 값을 쿠키에 넣은뒤 새로고침하면 디코딩이 진행되면서 slove 함수 조건문을 만족하여 클리어할 수 있다. PHP 코드 실행 사이트는 다음과 같다. -> http://phptester.net/

 

PHPTESTER - Test PHP code online

This application is free so please don't break it! Contact :phptester.net@gmail.com Dear Hacker you don't need to hack this free website to prove that you are very good!!!! Updates: I'm trying a new approche, PHP 7.1 to 7.4 version added but still in test

phptester.net

 

 


<?php
  $val_id="admin";
  $val_pw="nimda";
  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);
 

  echo $val_id."\n";
  echo $val_pw;
  exit;

 

 

 

 


위 코드를 사이트에서 실행하면 admin과 nimda를 인코딩한 값을 얻을 수 있다. 해당 값을 쿠키에 입력한 후 새로고침하면 위와 같이 스테이지를 클리어할 수 있다.

 

 

 

 

 

 

 

 

'웹 해킹 > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-08  (0) 2021.08.31
[Webhacking.kr] old-07  (0) 2021.08.27
[Webhacking.kr] old-05  (0) 2021.08.26
[Webhacking.kr] old-04  (0) 2021.08.26
[Webhacking.kr] old-03  (0) 2021.08.26

댓글