본문 바로가기
Wargame/Webhacking.kr

[Webhacking.kr#1] 삽질하며 배우는 웹해킹

by 맑은청이 2020. 9. 11.
728x90
반응형

웹해킹, 잘 몰라요! 

하지만 공부를 하면서 워게임도 풀어봐야한데서 html , JS 공부하고 지금은 php 공부 중인데 워게임을 같이 풀어가면서 할려고 합니다. 

 

나중에 시간이 허락하면 정리정돈이 잘 된 WriteUp을 쓸거고 이 글은 진짜 삽질 하는 과정을 적날하게 기록하기 위함입니다. 

 

 

문제를 들어가니 다음과 같이 보이는 군요. 

위 화면의 페이지 소스

 

1단계이니 그리 어렵지 않을거 같아요. 일단 view-source 를 클릭해봅니다. 

 

php 문법이 적혀져있네요. 

구조를 보니 첫 화면의 코드인거 같아요.

 

 

페이지 소스가 이렇게 더럽게 나오는거 보니 이걸 보는 건 아닌거 같아요

 

위 화면의 페이지 소스

혹시 php 로 뭔갈 나타내고 있는데 색깔 때문인가 싶어서 화면의 색깔도 바꿔봤습니다. 하지만 아무것도 안 나오네요!

 

 

 

어쨌든 php 코드를 해석해봐야겠네요.

어제는 해석해도 뭔뜻인지 몰랐어요.

그래서 php 코드를 실행해봤습니다. 

그래도 코드만 나오네요.. 흠

역시 php 코드를 해석해봐야할거 같습니다. 

 

<?php
  
include "../../config.php";
  if(
$_GET['view-source'] == 1){ view_source(); }
  if(!
$_COOKIE['user_lv']){
    
SetCookie("user_lv","1",time()+86400*30,"/challenge/web-01/");
    echo(
"<meta http-equiv=refresh content=0>");
  }
?>

 

찾아보니 include "파일명" 은 파일을 포함하는데 포함 할 파일이 없어도 다음코드를 실행합니다.

 

그럼 저 "../../config.php" 에 뭐가 있겠군요.

 

첫 화면 URL 에 ../../config.php을 넣어주었습니다.

 

화면은 비어있네요. 그리고 개발자 도구로 네트워크를 보니 'config.php'의 헤더를 볼 수 있었어요. 여기에는 캐시 정보가 있죠. 근데 그렇게 특별한건지 잘 모르겠네요. 별로 의미 없을지도 모르니깐 더 해석해보겠습니다. 

 

 

<?php
  
include "../../config.php"; -> 해당 파일의 경로를 포함함
  if(
$_GET['view-source'] == 1){ view_source(); } -> $_GET과 $_POST 는 값을 받는 방식입니다. 이는 view_source()를 첫 화면에서 클릭했을 때 view-source() 함수가 실행되면서 페이지 소스를 보여주는 거겠죠. 
  if(!
$_COOKIE['user_lv']){  -> 해당 쿠기가 생성되지 않으면, 비어있으면 쿠키를 설정하는 if 문 
    
SetCookie("user_lv","1",time()+86400*30,"/challenge/web-01/"); -> SetCookie는 이름을 제외하고 다 옵션, 지속 시간과 (여기서는 한달간 지속하네요), 맨 뒤에 있는건 이 폴더에 쿠키를 생성한다는 의미입니다. 
    echo(
"<meta http-equiv=refresh content=0>"); 
  }
?>

 

 

여기는 별로 볼게 없을거 같습니다. 

 

 

<?php
  
if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1; -> $_COOKIE는 해당 이름으로 설정된 쿠기를 확인할 수 있는 겁니다. is_numeric() 은 해당 값이 숫자인지 확인해주는 겁니다. 여기는 'user_lv' 의 쿠기값이 숫자가 아니면 1로 설정해주는 겁니다. 
  if(
$_COOKIE['user_lv']>=6$_COOKIE['user_lv']=1; -> 동일하게 6보다 크면 1로 맞춰줍니다. 
  if(
$_COOKIE['user_lv']>5solve(1); -> 만약 5를 초과 하면 sovle(1); 을 실행합니다. 
  echo 
"<br>level : {$_COOKIE['user_lv']}"; -> 첫페이지에 나와 있는 level : 1 
?>

 

느낌 상 solve(1) 이 실행이 되어야할 거 같아요.

근데 user_lv 조건이.. 흠 타이밍을 어떻게 잡아야하는걸까요. 세번째줄에서는 5보다 커야하는데 두번째 에서 6이상이면 1로 맞춰지니깐요. 

 

디버깅을 하면서 값을 바꿀 수 있다면 좋겠다라는 생각이 들었습니다. 

개발자 도구로 디버깅을 할 수 있는지 검색해봤어요.

찾아보니 자바스크립트 디버깅은 있는데 php 는 없는거 같네요. 

뭔가 획기적인 생각을 해야하는 걸까요..

 

is_numeric 을 통과하는 문자인데 5보다 크게 찍혔으면 좋을거 같아요.

'config.php' 를 수정할 수 있을까?

php 수정이 가능할까 

 

 

세션 아이디와 쿠기 값이 있는데 다시 보낼 수 없나라는 생각을 했습니다.


다음날.

 

PHP 수업을 다 들었습니다. 

파일 url 쪽을 건들면 효과가 있지 않을까 하고 계속 변경해봤는데 잘 안되네요..

 

와 WriteUP 봤는데 너무 어이가 없어서 웃기네요ㅋㅋ 

내일 정리해야겠습니다. 

728x90
반응형