[XSS Challenge] Stage #5
2021. 4. 11. 17:48
Study/Web Hacking
Stage #5 입장! Search창에 공격코드를 입력해보면 d까지밖에 입력하지 못한다. 그 이유를 소스코드에서 확인할 수 있었다. input의 maxlength가 15로 설정되어 있었다. 뒤에 0 하나를 더 붙여서 공격코드를 넉넉하게 입력할 수 있게 해줬다. 그리고 Search에서 입력한 값이 value의 값으로 들어가는 것을 확인할 수 있다. 지난 Stage에서 했던 것과 동일하게 태그를 닫고 새로 script태그를 작성하면 될 것 같다. ">
[XSS Challenge] Stage #4
2021. 4. 2. 02:27
Study/Web Hacking
Stege #4 입장! 이번엔 Search에 script를 작성하고, burp suite로 바로 패킷을 확인해봤다. Stage #3에는 없었던 p3이 추가된 것을 볼 수 있었다. 일단 p3을 건드리기 전에 먼저 p2의 필터링 여부를 확인해주기 위해 값을 script로 바꿨다. 확인 결과 p2도 필터링되고 있는 것을 알 수 있었다. Stage #4는 p3을 이용해서 해결해야 할 것 같다. p3에 있는 hackme가 어디에서 쓰이고 있는지 찾기 위해 소스코드를 살펴봤다. 확인 결과 form아래 type이 hidden인 input 태그의 value 값인 걸 알아냈다. 이전 stage에서 input 태그의 value에 script를 삽입해서 팝업창을 띄운적이 있다. 그 방법과 동일하게 해결하면 될 것 같다. p..
[XSS Challenge] Stage #3
2021. 4. 2. 01:55
Study/Web Hacking
Stage #3 입장! Stage #3에서는 alert(document.domain);을 실행시켜야 한다. Search a place에 를 그대로 입력해보았다. 코드가 실행되진 않고, 바로 아래에 그대로 출력되기만 했다. 이번엔 소스코드를 살펴봤다. 에서 ''가 필터링 되고 있다. Search a place에 입력되는 태그는 필터링 되기 때문에 다른 방법을 찾아봐야 한다. Stage #3은 Stage #2와 달리 Choose a country 부분이 추가되었다. 해당 부분의 입력을 이용해서 script를 실행할 다른 방법을 모색해야 한다. burp suite를 실행해서 서버로 전달되는 패킷을 확인해보자. 패킷을 보면 p1과 p2라는 변수에 각각 Search a place와 Choose a country ..
[XSS Challenge] Stage #2
2021. 3. 27. 01:39
Study/Web Hacking
Stage #2 입장! Stage #2의 과제는 alert(document.domain); 를 실행시키는 것이다. Stage #1에서 했던 것처럼 Search창에 를 입력해봤다. 지난 Stage에서처럼 사용자 입력이 화면에 나타나지는 않았다. Search 후 Search form코드쪽의 변화가 생겼는지 확인해봤자. form의 input 태그 value 속성에 사용자 입력이 그대로 노출되고 있는 것을 확인했다. 이때 입력을 닫는 태그로 시작하면 뒤에 오는 사용자 입력들이 value에 들어가지 않고, input 태그가 닫혀버린다. 따라서 닫는 태그 뒤로 script 태그를 삽입하면 script 태그가 실행 될 것이다. 그런데 value를 보면 "때문에 문자열이 열려 있다. > 앞에 "를 넣어서 이 문자열을 ..
[XSS Challenge] Stage #1
2021. 3. 27. 01:07
Study/Web Hacking
Stage #1 입장! 해당 Stage에서 해야하는 일은 alert(document.domain);을 실행시키는 것이다. Stage #1에 들어오면 사용자 입력을 받을 수 있는 Search창이 있다. XSS 공격은 사용자의 입력으로 실행된다. 따라서 사용자의 입력을 받을 수 있는 Search창의 보안 취약점을 찾기 위해 일단 아무 값이나 입력해봤다(hi 입력). 사용자의 입력이 Search창 아래에 출력됐다. 특별한 변경사항이 없는지 확인하기 위해 개발자도구를 실행했다. 개발자도구를 열어보면 Search form아래에 태그로 감싸진 사용자 입력이 생긴 것을 알 수 있다. 사용자 입력이 아무런 필터링 없이 소스코드에 그대로 노출되고 있다. 따라서 script코드를 삽입하면 alert(document.dom..
[WEB]: XSS game 06
2021. 2. 17. 19:19
Study/Web Hacking
[Mission] [해결방법] 이번에 해결해야 할 문제 페이지다. 딱 봤을 때 페이지의 로고와 아래 문구외에는 별다른게 없어 보인다. 사용자의 입력이 들어갈 수 있는 부분은 URL창밖에는 없는 것 같다. 페이지의 동작을 확인하기 위해서 URL창에 이것 저것 입력해봤다. URL에서 #뒤에 입력된 부분이 페이지 아랫부분 문구에 출력되고 있었다. 더 정확히 파악하기 위해 코드를 확인해봤다. function includeGadget(url) { var scriptEl = document.createElement('script'); // This will totally prevent us from loading evil URLs! if (url.match(/^https?:\/\//)) { setInnerText(..
[WEB]: XSS game 05
2021. 2. 8. 22:17
Study/Web Hacking
[Mission] [해결방법] 처음 시작화면이다. URL창과 화면 로고, 그리고 sing up 링크 외에는 별다른게 없다. sign up 링크를 눌러봤다. 그랬더니 signup 페이지에 next라는 URL 파라미터가 전달됐다. 이 next가 어떻게 사용되는지 알기 위해 소스코드를 확인해봤다. 확인해보니 Next 링크의 주소로 활용되고 있었다. next 변수를 잘 활용하면 pop up 창을 띄울 수 있을 것 같다. next 파라미터에 confirm" onclick="alert();을 전달해봤다. 하지만 원하는 결과를 얻진 못 했다. 이외의 공격 방법이 떠오르지 않아서 hint를 확인해봤는데 4번째 힌트에서 도움을 받았다. 드래그 된 부분을 보니까 a 태그 href에 javascript:doSomething..
[WEB]: XSS game 04
2021. 2. 1. 16:34
Study/Web Hacking
[Mission] [해결방법] 문제 페이지에 기본 value로 주어진 3으로 타이머를 작동시켜보았다. 그 결과 사용자의 입력이 timer라는 파라미터로 전송된다는 것을 알게 됐다. timer.html에서 위 코드를 보면 startTimer 함수에 사용자가 입력한 timer 값을 인자로 사용하는 것 같다. 더 정확하게 하기 위해 입력창에 333을 입력하고, 우클릭 -> 검사로 들어가서 소스코드를 확인해봤다. 사용자의 입력 333이 startTimer 함수의 인자로 사용되는 것을 확인했다. 사용자 입력으로 alert 함수를 주면 해결할 수 있을 것 같다. 3'); alert('XSS을 입력으로 주었더니 문제를 해결할 수 있었다. [결과]
[WEB]: XSS game 03
2021. 1. 27. 00:49
Study/Web Hacking
[Mission] [해결방법] script를 살펴보니 html코드가 삽입된 걸 볼 수 있었다. 사용자가 URL의 #뒤에 입력하는 값이 num으로 전달된다는 사실을 알 수 있다. 따라서 num으로 전달되는 값으로 존재하지 않는 이미지의 이름과 onerror 속성을 사용하면 된다. 나는 이미지의 이름을 0으로 설정하고 URL을 작성했다. "0.jpg' onerror='alert()'>" [결과]