본문 바로가기

Wargame/Web-W

xcz.kr PROB18

xcz.kr 의 PROB18이다.

제목은 Web Basic

소스페이지를 볼 수 있다.

소스페이지를 살펴보자.



도통 뭔지 모르겠는 소스코드가 등장한다..

변수명도 너무 다 비슷해보이고..

그래서 변수명만 조금 정리를 한 코드를 올리겠다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<
$key = "Congratulations!</br>Key is ??????????????????"
$a = @$_COOKIE['c']; 
$b = @$_GET['g']; 
$c = @$_POST['p']; 
if(empty($a) || empty($b) || empty($c)){exit ('wrong T.T');} 
$d = $b . $a; 
$e = $c; 
 
function test($a){ 
$b = ''
    for($i=0; $i < strlen($a); $i++){ 
        $b = $b . ' - ' . ord(substr($a,$i,1)); 
    } 
    return $b; 
if(test($d)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($e) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33"){ 
    echo $key; 
else
    echo 'wrong T.T'
?>
cs

이 소스코드로 살펴보면 보기 훨씬 수월할거다.

대략적 분석을 해보면, 쿠키값, get파라미터, post 파라미터로 각각 값을 하나씩 받아오는데

거기서 쿠키값과 get파라미터값이 합쳐진 값이 givemepassword거나 또는

post파라미터로 받아온 값이 keyplz!면 key값을 출력하고 아니면 wrong T.T를 출력한다.

하나 알아둬야할것은 get파라미터, 쿠키값, post파라미터 중 하나라도 비어있다면

wrong T.T를 출력하면서 끝내버린다는거다.

즉, 셋 다 값이 있는 상황에서 적어도 givemepassword나 keyplz! 중 하나의 조건은

만족시켜야 key값이 뜰 것이다.



필자는 get파라미터와 쿠키값을 이용하기로 했다.

일단 get파라미터로 giveme를 주자.



그리고 쿠키값으로 password를 주자.



그 다음으로 잊지말아야하는건 post파라미터도

값이 없더라도 전달은 되어야하니 직접 form태그와 input 태그를 이용해서

만들어서 값을 전달해주도록하자.



이렇게 생긴것에 값을 keyplz!로 넣어도되고

필자는 위에서 get과 쿠키값에서 이미 조건을 충족했으므로

그냥 값 없이 제출만을 눌러도 키 값은 등장할것이다.

제출!



키값이 등장했다. 끝.


반응형

'Wargame > Web-W' 카테고리의 다른 글

wargame.kr strcmp  (0) 2017.08.04
xcz.kr PROB32  (0) 2017.08.04