문제에 대한 모든 요소의 설명은 불가능한 것 같다.

그래도 최대한 친절하게..


시작!



웹 문제.

아무 값이나 입력해보았더니 변함없음.

페이지 소스를 보니 자바스크립트가 있음.

eval 함수를 통해 소스 분석을 어렵게 해놓았음.

이럴 땐 콘솔을 통해 쉽게 소스를 확인할 수 있다.



다음과 같이 코드를 확인할 수 있다. 그러나 정렬이 되어있지 않아 보기 힘들다.

이럴 때 유용한 사이트가 있다.

http://jsbeautifier.org/

자바스크립트를 뷰티하게 해주는 사이트다. 매우 유용.


자 이제 다음과 같은 소스를 확인할 수 있다.


var digitArray = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');


function PASS(n) {

    var result = '';

    var start = true;

    for (var i = 32; i > 0;) {

        i -= 4;

        var digit = (n >> i) & 0xf;

        if (!start || digit != 0) {

            start = false;

            result += digitArray[digit]

        }

    }

    return (result == '' ? '0' : result)

}


그리고 페이지 소스에 주석 힌트도 있었다.


<!--Hint : 12342046413275659 -->


자, 이제 문제를 어떻게 풀어나가야 할까?





분명 JS에서 PASS 함수를 정의했으나, 페이지 소스를 잘 살펴보면 PASS 함수를 사용하는 곳이 없다.

그렇다면, PASS 함수에 힌트 값을 넣는다면?


PASS 함수에서 "9c43c20c"라는 값이 반환되었다.

이 값을 인풋값으로 줬더니, Authkey를 확인할 수 있었다.


Clear!

'Wargame Writeup > SuNiTaTaS' 카테고리의 다른 글

[SuNiNaTaS] 7번 문제  (0) 2015.11.05
[SuNiNaTaS] 6번 문제  (4) 2015.11.05
[SuNiNaTaS] 4번 문제  (0) 2015.11.04
[SuNiNaTaS] 3번 문제  (0) 2015.11.04
[SuNiNaTaS] 2번 문제  (0) 2015.11.04

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/