티스토리 뷰



이번 포스팅은 webhacking.kr 워게임 사이트 Challenge 14번 문제를 풀어보도록 하겠습니다.

Challenge를 풀어가는 순서는 번호 순이 아닌 점수 분배가 낮은 문제들부터 풀어나갈 예정입니다.


Challenge 14번을 푼 환경은 Windows 10, Chrome을 사용하였습니다.


이번 포스팅의 Challenge 14번 문제는 아래 접근 방법과 기초 개념을 필요로 합니다.


1. HTML/PHP 코드 이해


이제 Challenge 14번을 본격적으로 풀어보도록 하겠습니다.



14번 문제 사이트로 입장하면 보이는 화면입니다.


문제 페이지에는 입력을 받을 수 있는 텍스트 박스와 check 버튼만이 존재합니다.




먼저 14번 문제 페이지의 코드를 보도록 하겠습니다.



페이지 코드를 보면 function ck() 함수를 볼 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var ul=document.URL
    #ul에 doucument.URL 값을 넣어줌, document.URL는 현재 URL을 의미
 
 
ul=ul.indexOf(".kr");
    #indexOf() 함수를 사용하여 ".kr"이 시작하는 위치를 ul에 저장
 
 
ul=ul*30
    #ul x 30 의 값을 ul에 저장
 
 
if(ul==pw.input_pwd.value)    alert("Password is"+ul*pw.input_pwd.value);
    #ul 값과 pw.input_pwd.value 값
    #즉 입력값이 같으면 "Password is [ul*pw.input_pwd.value]값" 이라는 키값을 알려주는 alert 창을 띄워줌
 
 
else    alert("Wrong");
    #ul과 입력값이 다를 때는 alert로 "Wrong" 을 띄워줌
cs


코드를 봤을 때, ul 값을 알아야한다는 것을 알 수 있습니다.


코드에서의 ul 값은 ".kr" 문자열이 시작하는 위치값으로, 아래 그림을 보시면 값을 알 수 있습니다.



문제 사이트의 url이 http://webhacking.kr/challenge/javascript/js1.html 로 시작하는 h를 0으로 시작하면 .kr의 문자열의 시작점은 17임을 알 수 있습니다.


코드의 16라인을 보시면 ul 값에 30을 곱하는데, ul은 17로 17x30=510 의 값을 도출할 수 있습니다.




도출된 510 을 14번 문제 페이지의 텍스트 박스에 넣어주고, check 버튼을 눌러주면 사진처럼 "Password is _________" 라는 alert 창이 뜨게 됩니다.


블러처리 된 패스워드 값을 webhacking.kr 의 Auth 에서 인증을 받아줍니다.



14번 문제에서 받은 패스워드 값을 Auth 페이지에서 Flag 인증을 해줍니다.



인증을 성공적으로 진행하면 Challenge 14 를 해결했다는 alert 창을 볼 수 있습니다.




Challenge 페이지로 돌아가면 14번 문제의 Score 100 을 획득하였음을 확인할 수 있습니다.



여기까지 봐주셔서 감사합니다.


다음 포스팅에서 봐요 :)

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함