본문 바로가기
작업/Webhacking.kr

webhacking.kr old-6 이해하기

728x90

 

 

 

 

old-6의 페이지 구성은 view-source, ID 값과 PW 값입니다.
view-source 링크를 새 페이지로 열어보았습니다.


소스 코드 분석

 

php코드(1)

 

 

 

php코드(2)

 

 

php 코드 부분을 확인해 보았습니다.

$val_id="guest";
$val_pw="123qwe";
for($i=0;$i<20;$i++){
  $val_id=base64_encode($val_id);
  $val_pw=base64_encode($val_pw);
}

 

base64_encode()는 base64 방식으로 문자열을 인코딩하는 함수입니다.
데이터를 ASCII 영역의 값으로 암호화한다고 생각하시면 됩니다.

반대의 개념으로 복호화를 진행하여 원래의 값을 가져오는 함수는 base64_decode()입니다.


코드를 해석해보면 $val_id와 $val_pw의 값을 20번 인코딩한다는 것입니다.

그 밑으로는 str_replace() 함수를 통해서 특정 문자를 바꾸는 작업을 가집니다.

 

Setcookie("user",$val_id,time()+86400,"/challenge/web-06/");
Setcookie("password",$val_pw,time()+86400,"/challenge/web-06/");

 

Setcookie() 함수는 쿠키를 적용하는 역할을 합니다.
위의 함수에 적용된 인자들의 의미는 다음과 같습니다.


Setcookie(쿠키 이름, 쿠키 값, 적용 시간, 쿠키가 적용된 경로)


user, password라는 이름의 쿠키는 각각 위에서 작업된 $val_id 값과 $val_pw 값을 가지며
86400초 (24시간 x 60분 x 60초)의 시간 동안 유지되고,
/challenge/web-06/에 속한 경로에 쿠키가 적용되었음을 의미합니다. 

 


이제 php코드(2)를 확인해 보겠습니다. 

for($i=0;$i<20;$i++){
  $decode_id=base64_decode($decode_id);
  $decode_pw=base64_decode($decode_pw);
}


if($decode_id=="admin" && $decode_pw=="nimda"){
  solve(6);
}

 

이번에는 base64_decode() 함수로 디코드 과정을 통해 값을 찾아내는 과정을 거칩니다.

 


디코드 된 값이 $val_id는 admin$val_pw는 nimda라면 문제가 해결되는 구조입니다.



첫 과정에서는 guest와 123qwe의 값으로 인코딩 작업을 가졌기 때문에 해답이 아닙니다.
그래서 현재의 쿠키 값을 admin과 nimda로 인코딩한 결과로 변경해야 합니다.


문제 해결

 

간단하게 php 코드를 실행시킬 수 있는 사이트를 활용하겠습니다.

 

codepad.org/

 

codepad

codepad was created by Steven Hazel, one of the founders of Sauce Labs.

codepad.org

 

 

인코딩 작업은 view-source에서 제공된 소스의 일부를 활용하여 쉽게 적용하였습니다.

 

<?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);
  }
echo $val_id;
echo ("\n");
echo $val_pw;
?>

 

인코딩 된 값을 echo를 통해 출력하여 알 수 있도록 합니다.

 

코드 실행 결과

 

 

결과를 보시면 긴 문자열이 나타난 것을 볼 수 있습니다.
얼핏 보면 두 문자열이 비슷해 보이겠지만, 문자열 중간을 보시면 값이 다름을 알 수 있습니다.


이제 인코딩 된 값을 쿠키에 적용시키도록 하겠습니다.
쿠키 적용은 크롬에서 EditThisCookie 확장 프로그램을 사용하였습니다.

 

 

 

user와 password 쿠키에 각각 admin, nimda 값을 인코딩한 문자열을 붙여 넣기 합니다.

 

 

 

 

 

적용이 완료되면 성공 화면이 나타나는 것을 확인할 수 있습니다!

 

 

 

 

728x90

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

webhacking.kr old-25 이해하기  (0) 2020.09.03
webhacking.kr old-19 이해하기  (0) 2020.09.02
webhacking.kr old-24 이해하기  (0) 2020.09.01
webhacking.kr old-18 이해하기  (0) 2020.08.30
webhacking.kr old-17 이해하기  (0) 2020.08.30