wargame/webhacking.kr

webhacking.kr 34번 풀이

LimeLee 2018. 8. 10. 03:25

webhacking.kr 34번 풀이


 문제 자체를 푸는데 있어서는 왜 이렇게 높은 배점이 책정되어있는가 

조금 의문이 들 정도로 무슨 의도인지 모르겠는 문제




[HINT]


1. JavaScript

2. 난독화(????)







문제에 접근하면 Wrong이라는 메세지 박스가 뜨고 검은 화면밖에 보이지않는다.

페이지의 소스를 보면 난독화가 되어 있다. 글자는 왜 깨져있는지 모르겠다.



하지만 개발자 도구로 보게 되면 언패킹 된 JS코드가 보이게 된다.

url0lDz0mBi2라는 문자열이 있으면 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