[XSS Challenges] Stage #4
문제 풀이 저번 문제하고 비슷하다. 다른점은 코드가 하나 더 들어있다. 바로 이 코드이다. 전 문제하고 비슷하지만 이 코드를 이용해서 뭔가를 하는것 같다. 개발자 도구를 이용해서 type을 text로 바꿨다. 그러면 다음과 같이 뜬다. value를 통해 값이 들어가기 때문에 stage #2를 풀었던 것과 비슷하게 하면 될것 같다. 폼 안에 hackeme">
문제 풀이 저번 문제하고 비슷하다. 다른점은 코드가 하나 더 들어있다. 바로 이 코드이다. 전 문제하고 비슷하지만 이 코드를 이용해서 뭔가를 하는것 같다. 개발자 도구를 이용해서 type을 text로 바꿨다. 그러면 다음과 같이 뜬다. value를 통해 값이 들어가기 때문에 stage #2를 풀었던 것과 비슷하게 하면 될것 같다. 폼 안에 hackeme">
문제 풀이 먼저 를 넣어보았다. 코드가 이렇게 바뀐다. 결과를 보자 꺽쇠나 그런것들이 html encoding 되는 것 같다. country를 고르는 것이 괜히 있는 것이 아닌것 같다. country를 고르고 search를 누르면 다음과 같이 코드가 들어간다. 큰따옴표 없이 코드가 들어가기 때문에 Japan 대신 가 오면 문제는 풀릴 것이다. 그렇다면 option태그의 내용을 로 바꾼다면 문제가 풀릴것이다. 개발자 도구의 console창을 이용하면 option 태그와 그 안의 내용을 script태그와 alert로 바꿀 수 있다. 일단 option태그의 내용을 받아오고 그것을 바꿔야 되기 때문에 dom객체를 이용하였다. option태그가 여러개이기 때문에 getElementsByTagName('option..
문제 풀이 Hint: close the current tag and add SCRIPT tag... 현재의 태그를 닫고 script 태그를 넣어주면 된다고 한다. 소스코드를 확인해보면 값이 value에 들어가는 것을 확인 할 수 있다. 따라서 현재의 태그를 닫으라는 말은 input의 태그를 닫으라는 뜻이다. 그렇게 되기 위해서 value에서 닫혀야 한다. 그러므로 "> 라고 작성하면 value에서 태그가 닫히고 script태그가 넣어지는 것을 확인할 수 있다. 실제로 그렇게 된다.
Find a way to make the application request an external file which will cause it to execute an alert(). (응용 프로그램이 외부파일을 요쳥하도록 하여 alert()를 실행시키는 방법을 찾아라) location.hash를 사용해야 될거 같다. index.html 코드 Loading gadget... location.hash가 어디에 포함되어있는지 살펴보자 #을 사용한 후에 gadget 파일 이름을 사용한다고 한다. hint를 보자 1. #뒤에가 로드된 스크립트의 url에 어떠한 영향을 미치는지 봐라 2. gadget url 보안검사가 진짜 안전한가 3. 내가 지칠 때, 비명을 지르가 싶다 4. 악마같은 js file을 쉽게 호스..
문제 소스코드 window.location = '{{next}}'; 로 새페이지로 이동 email 넣는 부분은 필요 없는 부분 Next를 누르면 next를 받아서 {{next}}로 이동 풀이 sign up을 누르면 다음의 페이지로 넘어간다 아까 코드에서 Next를 누르면 next를 받아서 {{next}}로 이동하는 것을 확인했다. url을 보면 next=confirm이다. confirm 페이지로 넘어갈 것이다. 실제로도 confirm페이지로 이동했다. 그렇다면 sign up을 누른 페이지에서 next의 값을 바꾸면 될 것이다. XSS game Level 2를 풀때를 생각해보면 쉽게 풀 수 있다. Level 2를 풀때 XSS를 통해 풀었다. 이와 마찬가지로 next에 입력된 값이 href 속성의 값으로 가..
페이지 소스를 보자 get방식으로 전달이 된다. 따라서 url을 이용해 전달할 수 있다. 버튼을 눌렀더니 다음과 같이 url이 바뀌었다. 코드를 보자 https://xss-game.appspot.com/level4/frame?timer=('{{ timer }}'); 이런식으로 전달이 되는 것같다 url에 이렇게 적었지만 안된다. 2번 힌트를 보니 다음과 같다. 세미콜론을 decode 하면 될거 같다. 세미콜론의 decode값은 %3b이다. 따라서 ;대신 %3b를 넣으면 될거 같다. 풀렸다.
다음의 창이 뜬다. alert()창이 뜨게 하는것이 주목적인거 같다. url 바를 잘 활용하라고 한다. 뭔지 모르겠어서 힌트를 봤다. window.location 을 활용해야 될거 같다. 소스코드를 확인해보면 스크립트 부분에 다음과 같은 코드가 적혀있다. 전체적으로 보았을때 사진을 클릭하면 숫자가 전달이 되고 그 숫자에 대해서 뭔가가 일어나는거 같다. 즉 url에서 #뒤를 변형시키면 될 거같다. 근데 그전에 했던거 처럼 #뒤에 단순히 를 써서는 안될거라고 힌트가 말하고 있다. 그러면 onerror라는 error창을 띄워주는 이벤트를 사용해야 될거같다. url을 다음과 같이 작성하였다. 따옴표로 묶은 이유는 chooseTab에서 인자가 전달이 될때 문자열로 전달이 되기 때문이다. 풀렸다.
들어가면 다음과 같은 화면이 뜬다. alert()창이 나오도록 하라는 것 같다. post를 save할 수 있기 때문에 리로드 할 때마다 우리가 어찌어찌해서 alert()창을 실행 시키면 내가 reload 할 때마다 이 레벨은 풀릴 수 있다고 한다. 대충 post를 save한다는 것이 핵심인거 같다. 따라서 먼저 level 1에서 했던거 처럼 alert();라 해주었다. 아무것도 안뜬다. XSS 공격은 script 태그로 공격하는 것도 있지만 자바스크립트 링크로 공격하는 것도 있다. 따라서 자바스크립트 링크로 공격해보자 XSS라고 써주었다. 그랬더니 링크가 뜬다. 눌렀더니 풀렸다. 문제에서 말했던 것이 post 들이 save 되기 때문에 alert()창이 뜨도록 하는 링크를 post에 save하도록 하라는..
들어가면 다음과 같은 화면이 나온다. alert 창을 화면에 띄우는 것이 mission이다. script를 입력했더니 url에 query=script가 뜬것을 볼수 있다. XSS 공격은 태그를 씀으로써 공격할 수 있다. alert()창이 나오게 하는 방법은 alert();를 써주면 search에 써주면 될 것이다. 풀렸다.