ํฐ์คํ ๋ฆฌ ๋ทฐ
์ ๋จ๊ณ์ ์ฝ๋๋ฅผ ์คํ์์ผ ๋ณธ ๊ฒฐ๊ณผ ํ์ ์ฐฝ์ ๋์ฐ์ง ๋ชปํ๊ณ ์์ต๋๋ค. ๋ํ ์ ๋จ๊ณ๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ ์ ๋ ฅ๋๋ ํผ์ด ์กด์ฌํ์ง ์๊ณ DOM ๋ฐฉ์์ ํํ๋ก URL ์ ๋ ฅ์ฐฝ์ ์ฝ๋๋ฅผ ์ฝ์ ํจ์ผ๋ก์จ ํ์ ์ฐฝ์ ์คํ์ํค๋๋ก ํ๊ณ ์์ต๋๋ค.
ํ์ด์ง ์์ค๋ฅผ ํ์ธํด๋ณด๋ <script> ํ๊ทธ์์ "a" ๋ณ์๊ฐ ์กด์ฌํ๋ฉฐ ์ฐ๋ฆฌ๊ฐ ์ ๋ ฅํ ๊ฐ์ด ๊ทธ๋๋ก ์ฝ์ ๋์ด ๋ค์ด๊ฐ๊ณ ์์ต๋๋ค.
๊ฒ์ฆํ๋ ๊ตฌ๋ฌธ์ "/" -> "\/" ํํ๋ก ์นํ์ํค๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ <script> Input </script> ์คํฌ๋ฆฝํธ ํ๊ทธ ์์ ์ ์ ํ ์ฝ๋๋ฅผ ์ฝ์ ํด์ผ๋ง ํ์ ์ฐฝ์ด ์คํ๋๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ์ ๊ณ ๋ฏผํด๋ณผ ํ์๊ฐ ์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
1. ;(์ธ๋ฏธ์ฝ๋ก )
2. ์ฃผ์
์ฐ์ javascript ์์ ;(์ธ๋ฏธ์ฝ๋ก )์ ๋ช ๋ น์ด ๋๋ฌ๋ค๋๊ฒ์ ๋ช ์์ ์ผ๋ก ๊ตฌ๋ถํด์ค๋๋ค. ์ฆ ์ธ๋ฏธ์ฝ๋ก ์์ด a=''alert('guleum') ํํ๋ก ์ ๋ ฅ๋๋ฉด "a" ๋ผ๋ ๋ณ์์ "alert" ๊ทธ๋ฆฌ๊ณ ์ดํ์ ์ฝ๋๊ฐ ๊ตฌ๋ถ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ฌธ๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์๋ฉ๋๋ค.
๋ง์ผ a='';alert('guleum'); ํ์์ผ๋ก ์ค๊ฐ์ ์ธ๋ฏธ์ฝ๋ก ์ ์ฝ์ ํ์ฌ ๊ฐ ๋ฌธ๋ฒ์ ๊ตฌ๋ถํด์ฃผ๊ฒ๋๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์๋์ง ์๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ค์ ์ฃผ์์ ๋๋ค. a๋ผ๋ ๋ณ์์ ์ฝ๋๋ฅผ ์ฝ์ ํ๋ฉด ๋งจ๋ง์ง๋ง ๊ตฌ๋ฌธ์ '(์ฑ๊ธ ์ฟผํฐ)๊ฐ ์๋์ผ๋ก ๋ถ๊ฒ ๋์ด ๋ฌธ๋ฒ์ด ์ด์ํด์ง๊ณ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ํ์ ์ฐฝ์ ๋์ฐ๊ธฐ ์ํด alert('guleum') ๊น์ง๋ง ์ฑ๊ณต์ ์ผ๋ก ์คํ์ํค๋ฉด ๋ฉ๋๋ค. ์ฆ ์ดํ์ ๊ตฌ๋ฌธ์ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์์ฒ๋ฆฌ๋ฅผ ํด์ผ ๋ฉ๋๋ค
์ฃผ์์ฒ๋ฆฌ
javascript : //(๋ค์ค ์ฃผ์)
html : <!--์ฃผ์-->
javascript ์ ์ฃผ์์ ์ฌ์ฉํ๊ธฐ์๋ /(์ฌ๋์)๋ฅผ -> \/ ํํ๋ก ์นํํ๊ธฐ ๋๋ฌธ์ html ์ ์ฃผ์์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๊ตฌ๋ฒ์ ์ ๊ฒฝ์ฐ html ์ ์ฃผ์์ ์ฌ์ฉํ๋ฉด ์ ๋๋ก ์ธ์์ ๋ชปํ์ง๋ง ์์ฆ์ ํ๊ฒฝ์ ๊ฒฝ์ฐ html ์ ์ฝ๋๊ฐ javascript ์ ์ฝ์ ๋์ด๋ ์ดํดํ๊ณ ์คํ์์ผ์ฃผ๋๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
์ฑ๊ณต์ ์ผ๋ก ํ์ ์ฐฝ์ ๋์ ์ต๋๋ค.
Exploit Code
';alert('guleum');<!--
'CHALLENGE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LOS] Darkknight ํ์ด(12) (0) | 2020.12.08 |
---|---|
XSS Challenges 5-2 (0) | 2020.12.08 |
XSS Challenges 4 (0) | 2020.12.06 |
[LOS] Golem ํ์ด(11) (0) | 2020.12.06 |
[LOS] Skeleton ํ์ด(10) (0) | 2020.12.06 |