Webhacking.kr Challenge 12 풀이.
12번 화면이다.
일단 자바스크립트 언어인 것만 알 수 있다.
일단 별 다른 것이 없으니 오른쪽 마우스를 눌러 페이지 소스를 본다.
무슨 숫자들이 많이 나열되어 있고, <script> 아래 보면 WorkTimeFun이라는 변수에
String.fromCharCode 함수를 통해 아스키 코드를 알파벳 문자로 바꾸어 저장하도록 되어 있다.
그 아래 eval 함수를 통해 이를 실행한다.
String.fromCharCode ==> 숫자들을 아스키 코드로 반환.
eval ==> 문자열을 자바스크립트 코드로 변환시켜주는 함수.
일단 저 숫자들은 앞에서 자바스크립트 언어라는 것을 알았으니 크롬 개발자 도구의 Console에서 실행시켜 봤다.
자바스크립트 코드라는 것을 알 수 있다.
코드를 보면 먼저 URL "=" 문자로 부터 문자열을 잘라 ck함수에 저장한다.
아래 반복문에서는 아스키 코드의 1부터 122번까지의 문자를 enco 변수에 저장한다.
enco_(x) 함수에서는 enco 함수에서 x 위치의 문자열을 반환해준다.
그 아래 조건문에서 만약 ck 변수와 enco 변수에서 특정 문자들을 추출해 합친것이 같으면 PassWord를 출력해준다.
즉 조건문의 뒷 부분의 문자열이 뭔지를 확인하고, 이를 URL에서 인자를 넘겨주면 된다.
일단 조건문에 서 뒷 부분의 문자열이 뭔지를 알아보기 위해 다시 Console를 사용한다.
일단 직접 출력하기 위해 if문 말고 document.write로 바꾸고 아래 alert ~~~~~를 없앴는데 오류가 뜬다.
ck함수는 똑같으면 통과한다는 뜻이니까 인자로 넘기면 될 거 같다.
youaregod~~~~~~~! 이라는 PW과 나온다.
일단 인증(=Auth)을 해본다.
Cf) 자바스크립트에 대한 난독화가 문제의 핵심.
'# Related site issues > WEBHACKING.KR' 카테고리의 다른 글
Webhacking.kr Challenge 47. (0) | 2018.05.11 |
---|---|
Webhacking.kr Challenge 42. (0) | 2018.05.06 |
Webhacking.kr Challenge 23. (0) | 2018.05.04 |
Webhacking.kr Challenge 1. (0) | 2018.05.04 |
Webhacking.kr Challenge 58. (0) | 2018.05.03 |