Skandia
문제
문제해석
문자를 입력하면 대문자로 치환된다.
풀이
HTML entity를 이용하여 해결하였다.
HTML entity : HTML 문서를 코딩할 때 태그와 혼용되는 것을 막기 위해 브라우저 상에 예약된 문자
HTML entity는 JavaScript를 해석하기전에 미리 해석되기 때문에 script가 해석 될 때에 alert(1)로 인식하여 문제가 풀린다.
#뒤에 x를 통해 16진수로 사용가능하다
Input :</script><iframe/onload=alert(1)//
처음 시도했던 것
원래 문제 풀때에 처음 시도했던 방법이다.
Input : "+'\141\154\145\162\164\50\61\51'+"
Warmup때 썻던 방법을 응용하여 공격할 수 있을 줄 알았는데 Javascript 단에서 해석이 되기때문에 alert()로서의 기능은 수행되지 않고 문자열로서만 변환이 되어 공격이 안된 것 같다.
다른 풀이
url encoding 을 이용하는 방법
data:, 뒤에 url 인코딩하여 사용할 수 있는 방법으로 해결하였다.
Input : </script><script src=data:,%61%6C%65%72%74(1)>
이외에
저번에도 사용했던 \u0061 js에서 해석되는 문법
svg일때 크롬 오류로 html entitiy를 해석하는 것
<svg><script>alert1)</script>
태그에도 우선순위가 있음!
<title><a href="</title><svg/onerror=alert(1)>
를 알게 되었땅
'Web hacking > alert(1) to win' 카테고리의 다른 글
alert(1) to win - JSON3 (0) | 2019.11.26 |
---|---|
alert(1) to win - callback2 (0) | 2019.11.10 |
alert(1) to win - JSON2 (0) | 2019.11.10 |
alert(1) to win - markdown (0) | 2019.11.10 |
alert(1) to win - 1 (0) | 2019.11.10 |