HackChang

[xcz.kr] Prob18 18번 문제 풀이 본문

W4RG4M3

[xcz.kr] Prob18 18번 문제 풀이

HackChang 2020. 7. 21. 19:36

Prob18

이번 문제는 웹관련 문제인 것 같다.

바로 소스를 보도록 하겠다.

 

소스가 보기 안좋게 되어있다. 우선 html파일로 저장해서 열어보도록 하겠다.

 

 

html로 열어보면 이런식으로 나온다.

우선 비쥬얼스튜디오 코드로 열어보겠다.

 

<? 태그를 봐서 php소스인 것을 알 수 있었고, 변수명을 보기 편하도록 바꿔보겠다.

 

<?
$key = "Congratulations!</br>Key is ??????????????????";
$cookie = @$_COOKIE['c'];
$get = @$_GET['g'];
$post = @$_POST['p'];
if(empty($cookie) || empty($get) || empty($post)){exit ('wrong T.T');}
$val1 = $get . $cookie;
$val2 = $post;

function test($a){
$b = '';
    for($i=0; $i < strlen($a); $i++){
        $b = $b . ' - ' . ord(substr($a,$i,1));
    }
    return $b;
}
if(test($val1)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($val2) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33"){
    echo $key;
}
else{
    echo 'wrong T.T';
}
?>

이렇게 바꿨고, 아직 불편한 부분이 많지만, 보도록 하겠다.

$get에는 GET 메소드를 통해 g의 값이 , $cookie는 cookie중 c문자열의 값, $post는 p의 값이 들어간다.

val1 = get과 cookie , val2 = post 이고,

아래 test함수를 보면 문자열을 한글자씩 구하고, -로 문자열을 붙인다.

php에서는 ord()로 받은 문자는 아스키(Ascii)코드로 값을 반환한다.

 

따라서 아래 조건문에 있는 val1과 비교하는 문자열을 아스키코드로 바꾸면

givemepassword이고,

val2와 비교하는 문자열은 아스키코드로 바꾸면 keyplz! 인 것을 알 수 있었다.

 

따라서 get으로는 giveme , cookie로는 password , post로는 keyplz! 를 넘기면 문제가 풀릴 것이라고 생각했고,

 

Burp Suite를 사용해서 고쳐보도록 하겠다.

 

이렇게 GET메소드를 POST로 수정 후 URL에 g , cookic에 c , body에 p를 추가해서 forward해보도록 하겠다.

 

이렇게 문제에 정답이 표시되는 것을 볼 수 있었고, 인증을 했다.

 

'W4RG4M3' 카테고리의 다른 글

[xcz.kr] Prob22 22번 문제 풀이  (0) 2020.07.24
[xcz.kr] Prob20 20번 문제 풀이  (0) 2020.07.23
[xcz.kr] Prob17 17번 문제 풀이  (0) 2020.07.21
[xcz.kr] Prob16 16번 문제 풀이  (0) 2020.07.21
[xcz.kr] Prob15 15번 문제 풀이  (0) 2020.07.19
Comments