본문 바로가기
보안/Webhacking.kr

[Webhacking.kr] Challenge(old) old-14 풀이

by zlzzlzz2l 2020. 11. 26.
반응형

개념

: 자바스크립트, indexOf() 함수


풀이

old-14 문제를 클릭하면

form과 check 버튼이 있는 걸 확인할 수 있다.

아무 값이나 써서 check 버튼을 눌러보았다.

그랬더니 Wrong 이라는 alert 창이 떴다.

문제에서 원하는 문자를 입력한 후, check 버튼을 누르면 문제가 해결될 것 같은 느낌이다.

정확한 답을 찾기 위해 개발자 도구[F12]를 이용하여 소스 코드를 보았다.

빨간색 네모 박스를 보면 check 버튼 코드이다.

check 버튼을 누르면 ck 함수가 실행되며, ck 함수를 통해 문제가 해결되는 느낌이다.

script 안에 있는 ck 함수 코드를 자세히 살펴봐야겠다.

코드를 살펴보기 전에 알아야 할 개념인 indexOf()에 대해서 알아보려고 한다.

개념 설명

indexOf()

indexOf는 원하는 문자열을 찾거나 배열의 값을 찾는 함수이다.

String.indexOf(SearchValue, start);

위와 같은 형태로 쓰이는데,

문자열(String) 왼쪽에서부터 찾길 원하는 값(SearchValue)의 위치를 count하며, 찾고자 하는 값을 마주치면 그 위치를 반환하는 함수이다.

시작 위치(start)가 선언되지 않았다면 왼쪽에서부터 0으로 시작한다.

예를 들어,

zlzzlzz2l.indexOf("2"); 이 코드는 시작 위치가 선언되지 않았기 때문에 7을 반환한다.

zlzzlzz2l.indexOf("z2", 2); 이 코드는 시작 위치가 선언되었기 때문에 6을 반환한다.

알고 있어야 할 개념을 알았으니 이제 코드를 자세히 살펴보려고 한다.

소스코드 분석

<script>
function ck(){
  var ul=document.URL; //현재 브라우저의 URL을 가지고 있는 변수 ul 선언
  ul=ul.indexOf(".kr"); //현재 브라우저 URL에서 .kr이 위치한 값을 ul 변수에 대입
  ul=ul*30; //ul값에 30을 곱해서 다시 ul 변수에 대입
  if(ul==pw.input_pwd.value) { //ul의 값이 pwd의 값과 같다면
    location.href="?"+ul*pw.input_pwd.value; //현재 페이지가 ?+ul*pw.input_pwd.value로 이동한다.
  }
  else { //ul의 값과 pwd의 값이 같지 않다면
    alert("Wrong"); //Wrong이라는 알림창이 뜬다.
  }
}
</script>

3 : ul이라는 변수를 선언하면서 현재 브라우저의 URL의 값을 대입해주었다.

*4 : * ul이라는 문자열에서 .kr의 위치를 변수 ul에 대입한다.

http://webhacking.kr/challenge/js-1/이 현재 위치한 브라우저의 URL이다.

시작 위치가 정해져 있지 않아 왼쪽 h를 기준으로 .kr이 있는 곳까지 0부터 숫자를 count 하면 된다.

count했더니 .kr은 18번째에 위치하고 있다.

그렇기 때문에 ul이라는 변수에 18이 대입된다.

*5 : *18(ul 값) * 30을 해주어 다시 ul에 대입한다. ul에 540이 대입된다.

*6 - 8 : *ul의 값과 pw.input_pwd.value 값이 같다면 현재 페이지에서 ? + ul*pw.input_pwd.value 로 이동한다.

*9 - 11 : *값이 같지 않다면 Wrong이라는 alert창이 뜬다.


코드를 분석해보니 입력창에 540을 넣어준다면 현재 페이지에서 7번 코드와 같은 페이지로 이동하여 문제가 풀릴 것 같다.

540을 입력한 후, check 버튼을 눌렀다.

예상과 같이 문제가 풀렸다.


저의 주관적인 생각이 담긴 글입니다.

이 글을 보신 분들에게 도움이 되고자 글을 썼지만 부족한 부분이 많을 수 있습니다.

그 점 양해 부탁드리며, 추가했으면 하는 부분이나 잘못된 부분은 댓글로 알려주시면 감사하겠습니다!

반응형

'보안 > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] Challenge(old) old-17 풀이  (0) 2020.11.26
[Webhacking.kr] Challenge(old) old-15 풀이  (0) 2020.11.26

댓글