일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AES
- distinct()
- arrange()
- 대칭형 알고리즘
- filter()
- proc contents
- mutate()
- select()
- summarize()
- groupe_by()
- sample_n()
- samp;e_frac()
- dplyr
- Today
- Total
Gae Ko's Blog
[webhacking.kr] challenges14 본문
문제를 눌렀더니 다음과 같았다.
ctrl+U를 눌러 소스창을 보았다.
처음 보는 소스들이 보여서 구글링해보았다.
- var 은 자바스크립트에서 변수 선언시 사용한다.
- document.URL 은 현재 페이지의 URL을 의미
- indexOf()메소드 는 문자열에 지정된 값이 처음 나타나는 위치를 변환하고, 검색대상 값을 찾을 수 없다면 -1을 반환
위 사실을 바탕으로 소스코드를 분석해보면
10줄 : 비밀번호를 입력하는 폼으로 값을 집어넣고 버튼은 누르면 ch()함수가 실행된다.
12-19줄 : 함수 ch()에 대한 설명으로
14줄 : 변수 ul을 선언과 동시에 document.URL 을 사용해 현재 URL로 초기화. string형태
15줄 : indexOf()메소드를 이용해 ul에서 ".kr" 의 시작위치를 반환
16줄 : 위에서 반환된 수에 30을 곱한 숫자를 변수 ul에 저장
17,18줄 : 만약 폼에 입력한 값이 ul과 같다면 Password is ul*pw.input_pwd.valued값 라는 알림창을 띄우고 아니면 Wrong라고 알림창띄우기
즉, 여기서 password는 ul의 제곱수 임을 알 수 있다!
그렇다면 ul을 구해야한다.
document.URL은 현재페이지의 URL이라고 하여 문제페이지의 URL을 복사해보니 http://webhacking.kr/challenge/javascript/js1.html 였다.
여기서 .kr의 시작위치 값을 세어서 나온 18에 30을 곱하여 ul값을 구하였다. (18*30=540)
그런데 540을 폼에 입력하여 버튼을 누르니 wrong 알림창이 나왔다... ul값이 틀렸다는게 분명하다. ㅠㅠ
고민하다가 document.URL과 indexOf()메소드를콘솔창에 입력하여 실행해도 되지 않을까라는 생각에 해보았다.
오!!! .kr의 위치가 17번째였다. (아까 틀린 이유)
ul값은 510이 나왔고 그거의 제곱수인 260100은 password가 된다.
플래그값에 260100를 입력하고 제출하면
Clear!!!
[추가]
- 직접 계산해서 틀린 값이 나왔었는데 그 이유는
indexOf()메소드가 지정된 값의 위치를 반환한다고 했는데 그 위치라는게 index로 0부터 시작하는 값이기 때문에
내가 직접 세어 나온 위치는 1 더 큰 수가 나올 수 밖에 ㅎㅎ
'웹해킹 > [webhacking.kr] ' 카테고리의 다른 글
[webhacking.kr] challenges12 (0) | 2017.09.25 |
---|---|
[webhacking.kr] challenges16 (0) | 2017.09.25 |
[webhacking.kr] challenges17 (0) | 2017.09.18 |
[webhacking.kr] challenges15 (0) | 2017.09.18 |
[webhacking.kr] 로그인하기 (0) | 2017.09.12 |