webhacking.kr 34번 풀이
문제 자체를 푸는데 있어서는 왜 이렇게 높은 배점이 책정되어있는가
조금 의문이 들 정도로 무슨 의도인지 모르겠는 문제
[HINT]
1. JavaScript
2. 난독화(????)
문제에 접근하면 Wrong이라는 메세지 박스가 뜨고 검은 화면밖에 보이지않는다.
페이지의 소스를 보면 난독화가 되어 있다. 글자는 왜 깨져있는지 모르겠다.
하지만 개발자 도구로 보게 되면 언패킹 된 JS코드가 보이게 된다.
url에 0lDz0mBi2라는 문자열이 있으면 Passw0RRdd.pww 페이지로 이동하고 아니면 메세지 박스를 띄운다.
난독화 문제인데 왜 소스 코드 막 줄에 구지 언패킹 된 소스를 노출시킨건지 이해가 되지 않았다.
바쁜 웹 해킹.kr 개발자의 의도는 지금은 잘 알턱이 없고 난독화에 대해서는 그렇게 자세히 아는 것은 아니니,
크롬 개발자 도구에 언패킹 된 JS코드가 왜 출력되는지만 분석해본다.
개발자 소스의 Console 부분을 이용해서 변수에 무엇이 들어있었는지 확인해본다.
물론 사용된 변수는 많지만 O00O에 언패킹 된 JS코드가 있었으므로 그와 비슷한 변수만 추출했다.
O0O0, O0OO에서 난독화가 되어있는 값을 찾았다. 글자가 왜 깨지는지는 잘 모르겠다.
그 중, O0OO의 값을 url decode 한 값을 보았다.
대충 보면 어떤 변수에서 문자열을 가져오고 자른 뒤에 합치는 js인 것을 확인 할 수 있다.
주목할 점은 document.write(lO)의 코드가 있다는 것이다.
document.write(1)을 Console에서 실행시켜보면 알겠지만 현재 페이지에 1이라는 값이 쓰여지게 된다.
O0OO값은 난독화 된 코드에서 실행되어, lO값이 현재 페이지 내에 쓰여졌다라고 추측할 수 있다.
그리고 O0OO의 값에서 if(naa){document.write(lO)}; 값만 지우고 Console에서 실행시켜보았다.
3번째 <script> 태그에 있던 값이고 이를 document.write로 실행시켜본다.
페이지 내에 언패킹 된 JS코드가 쓰여진 것을 확인 할 수 있다.
배점을 높게 했는데 난독화 소스 내의 document.write로 인해 배점 낮은 다른 난독화 문제들보다 쉽게 풀렸던 것 같다.
'wargame > webhacking.kr' 카테고리의 다른 글
webhacking.kr 42번 풀이 (1) | 2018.08.13 |
---|---|
webhacking.kr 18번 풀이 (0) | 2018.08.13 |
webhacking.kr 8번 풀이 (0) | 2018.08.08 |
webhacking.kr 17번 풀이 (1) | 2018.08.08 |
webhacking.kr 4번 풀이 (0) | 2018.08.08 |