문제에 대한 모든 요소의 설명은 불가능한 것 같다.
그래도 최대한 친절하게..
시작!
웹 문제.
아무 값이나 입력해보았더니 변함없음.
페이지 소스를 보니 자바스크립트가 있음.
eval 함수를 통해 소스 분석을 어렵게 해놓았음.
이럴 땐 콘솔을 통해 쉽게 소스를 확인할 수 있다.
다음과 같이 코드를 확인할 수 있다. 그러나 정렬이 되어있지 않아 보기 힘들다.
이럴 때 유용한 사이트가 있다.
자바스크립트를 뷰티하게 해주는 사이트다. 매우 유용.
자 이제 다음과 같은 소스를 확인할 수 있다.
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/