XSS-Game Level 6

μ„€λͺ…(λ²ˆμ—­) λ³΅μž‘ν•œ μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—λŠ” URL 맀개 λ³€μˆ˜μ˜ κ°’ λ˜λŠ”. NET Framework의 일뢀에 따라 javascript 라이브러리λ₯Ό λ™μ μœΌλ‘œ load ν•˜λŠ” κΈ°λŠ₯이 μžˆλŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. "location hash" μ΄λŠ” 맀우 κΉŒλ‹€λ‘œμš΄ μž‘μ—…μž…λ‹ˆλ‹€. 슀크립트 λ˜λŠ” 기타 잠재적으둜 μœ„ν—˜ν•œ 데이터λ₯Ό load ν•  λ•Œ μ‚¬μš©μž μž…λ ₯이 URL에 영ν–₯을 λ―ΈμΉ˜λ„λ‘ ν—ˆμš©ν•˜λ €λ©΄ XMLHttpRequest μ’…μ’… μ‹¬κ°ν•œ 취약성을 μœ λ°œν•©λ‹ˆλ‹€. μž„λ¬΄λͺ©ν‘œ: ν•  μˆ˜μžˆλŠ” 방법 μ°ΎκΈ° μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ™ΈλΆ€ 파일 μš”μ²­ν•˜κ²Œ 그것이 μ‹€ν–‰ν•˜κ²Œ λ©λ‹ˆλ‹€. alert(). ν•΄λ‹Ή 문제의 경우 URL μž…λ ₯κ°’ μ΄μ™Έμ—λŠ” 별닀λ₯Έ μ΄λ²€νŠΈκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ „ λ‹¨κ³„μ—μ„œ 좜제자의 μ˜λ„λ₯Ό νŒŒμ•…ν•˜μ§€ μ•Šκ³  λ¬΄μž‘μ • μ°”λŸ¬λ΄€λ˜ κ²½ν—˜μ΄ μžˆκΈ°μ— μ΄λ²ˆμ—λŠ” 좜제자의 μ˜λ„λ₯Ό..

CHALLENGE
XSS-Game Level 5

μ„€λͺ…(λ²ˆμ—­) ꡐ차 μ‚¬μ΄νŠΈ μŠ€ν¬λ¦½νŒ…μ€ 데이터λ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ΄μŠ€μΌ€μ΄ν”„ ν•˜λŠ”κ²ƒλ§Œ 이 μ•„λ‹™λ‹ˆλ‹€.λ•Œλ•Œλ‘œ κ³΅κ²©μžλŠ” μƒˆλ‘œμš΄ μš”μ†Œλ₯Ό DOM에 μ‚½μž…ν•˜μ§€ μ•Šκ³ λ„ μ•…μ˜μ μΈ ν–‰μœ„λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μž„λ¬΄λͺ©ν‘œ: alert() μ‘μš© ν”„λ‘œκ·Έλž¨ μ»¨ν…μŠ€νŠΈμ—μ„œ νŒμ—… 슀크립트λ₯Ό μ‚½μž…ν•˜μ‹­μ‹œμ˜€ 마치 google 엔진과 μœ μ‚¬ν•œ κ°€μž… νŽ˜μ΄μ§€κ°€ ν™•μΈλ©λ‹ˆλ‹€. URLμ΄λ‚˜ email μž…λ ₯ 폼에 script ꡬ문을 μ‚½μž…ν•΄λ„ μ•„λ¬΄λŸ° λ°˜μ‘μ΄ 보이지 μ•ŠμŠ΅λ‹ˆλ‹€. .. .. .. .. μ†ŒμŠ€μ—μ„œ λ­”κ°€ μ •λ‹΅μ΄λ‚˜ 올 것 같은 μ˜μ—­μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€. confirm.html μ†ŒμŠ€ μ•ˆμ— κΈ°λŠ₯적으둜 μ‚¬μš©λ˜λŠ” ν•¨μˆ˜κ°€ λ³΄μž…λ‹ˆλ‹€. ν•΄λ‹Ή μ˜μ—­μ΄ μ–΄λ–€ 상관관계가 μžˆλŠ”μ§€ νŒŒμ•…ν•˜κΈ° μœ„ν•΄ timeout / location / next 등을 νŒŒμ•…ν•΄λ΄μ•Ό ν•©λ‹ˆλ‹€. .. .. Next >> .. ....

CHALLENGE
XSS-Game Level 4

μ„€λͺ…(λ²ˆμ—­) μ‚¬μš©μžκ°€ 제곡 ν•œ λͺ¨λ“  λ°μ΄ν„°λŠ” 데이터가 ν‘œμ‹œλ  νŽ˜μ΄μ§€μ˜ μ»¨ν…μŠ€νŠΈμ— 맞게 μ˜¬λ°”λ₯΄κ²Œ μ΄μŠ€μΌ€μ΄ν”„ λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.이 μˆ˜μ€€μ€ 이유λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€. μž„λ¬΄λͺ©ν‘œ : 슀크립트λ₯Ό μ‚½μž… alert() ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ JavaScriptλ₯Ό νŒμ—… ν•©λ‹ˆλ‹€. Create timerλΌλŠ” 폼에 ν•΄λ‹Ή 숫자λ₯Ό μž…λ ₯ν•˜μ—¬ 타이머("초"λ‹¨μœ„) μ‹œκ°„ μ§€λ‚œ ν›„ λ‹€μ‹œ λ¦¬λ‹€μ΄λ ‰μ…˜ ν•΄μ£ΌλŠ” νŽ˜μ΄μ§€λ‘œ ν™•μΈλ©λ‹ˆλ‹€. URLμ΄λ‚˜ Create timer 폼에 μ•…μ˜μ μΈ 슀크립트 문을 μ‚½μž…ν•΄λ„ 싀행이 λ˜μ§€ μ•Šκ³  μžˆμŠ΅λ‹ˆλ‹€. .. .. .. .. 타이머 폼을 μž…λ ₯해보면 timer λΌλŠ” λ§€κ°œλ³€μˆ˜κ°€ μ‚¬μš©λ˜κ³  μžˆλŠ” 것을 확인 .. .. .. .. μ†ŒμŠ€λ₯Ό 확인해보면 onload 속성에 μ •μ˜ν•΄λ‘” startTimer ν•¨μˆ˜κ°€ 호좜되고 timer 인자 값이 λ“€μ–΄κ°€ ..

CHALLENGE
XSS-Game Level 3

μ„€λͺ…(λ²ˆμ—­) 이전 μˆ˜μ€€μ—μ„œ λ³΄μ•˜ 듯이 일반적인 JS ν•¨μˆ˜ 쀑 μΌλΆ€λŠ” μ‹€ν–‰ μ‹±ν¬λ‘œ λΈŒλΌμš°μ €κ°€ μž…λ ₯에 λ‚˜νƒ€λ‚˜λŠ” λͺ¨λ“  슀크립트λ₯Ό μ‹€ν–‰ν•˜λ„λ‘ ν•©λ‹ˆλ‹€. 사싀은 λ‚΄λΆ€μ μœΌλ‘œ μ΄λŸ¬ν•œ κΈ°λŠ₯ 쀑 ν•˜λ‚˜λ₯Ό μ‚¬μš©ν•˜λŠ” μƒμœ„ μˆ˜μ€€ API에 μ˜ν•΄ μˆ¨κ²¨μ§‘λ‹ˆλ‹€. 이 μˆ˜μ€€μ˜ μ‘μš© ν”„λ‘œκ·Έλž¨μ€ μ΄λŸ¬ν•œ μˆ¨κ²¨μ§„ 싱크λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μž„λ¬΄ λͺ©ν‘œ : 이전과 λ§ˆμ°¬κ°€μ§€λ‘œ 슀크립트λ₯Ό μ‚½μž… alert() ν•˜μ—¬ μ•±μ—μ„œ JavaScriptλ₯Ό νŒμ—… ν•©λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ–΄λŠ 곳에도 νŽ˜μ΄λ‘œλ“œλ₯Ό μž…λ ₯ν•  수 μ—†μœΌλ―€λ‘œ μ•„λž˜ URL ν‘œμ‹œ μ€„μ—μ„œ μ£Όμ†Œλ₯Ό μˆ˜λ™μœΌλ‘œ μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. ν•΄λ‹Ή νŽ˜μ΄μ§€λŠ” 별닀λ₯Έ μ»¨ν…μΈ λ‚˜ 이벀트적인 μš”μ†Œκ°€ 보이지 μ•ŠλŠ” 정적인 νŽ˜μ΄μ§€μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ νŽ˜μ΄μ§€μ˜ 경우 " Reflected " 같은 λ°˜μ‚¬ν˜• 곡격을 μ‹œλ„ν•΄μ•Ό ν•©λ‹ˆλ‹€. 보톡 이럴경우 상단 ..

CHALLENGE
XSS-Game Level 2

μ„€λͺ…(λ²ˆμ—­) μ›Ή μ‘μš© ν”„λ‘œκ·Έλž¨μ€ μ’…μ’… μ‚¬μš©μž 데이터λ₯Ό μ„œλ²„ 츑에 λ³΄κ΄€ν•˜κ³  점점 더 ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ λ°μ΄ν„°λ² μ΄μŠ€μ— λ³΄κ΄€ν•˜κ³  λ‚˜μ€‘μ— μ‚¬μš©μžμ—κ²Œ ν‘œμ‹œν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ‚¬μš©μž μ œμ–΄ λ°μ΄ν„°μ˜ μΆœμ²˜μ— 관계없이 μ‹ μ€‘ν•˜κ²Œ μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이 μˆ˜μ€€μ€ λ³΅μž‘ν•œ μ•±μ—μ„œ XSS 버그가 μ–Όλ§ˆλ‚˜ μ‰½κ²Œ λ„μž…λ  수 μžˆλŠ”μ§€ λ³΄μ—¬μ€λ‹ˆλ‹€. μž„λ¬΄ λͺ©ν‘œ : alert() μ‘μš© ν”„λ‘œκ·Έλž¨ μ»¨ν…μŠ€νŠΈμ—μ„œ νŒμ—… 슀크립트λ₯Ό μ‚½μž…ν•©λ‹ˆλ‹€. μ°Έκ³  : μ‘μš© ν”„λ‘œκ·Έλž¨μ€ κ²Œμ‹œλ¬Όμ„ μ €μž₯ν•˜λ―€λ‘œ κ²½κ³ λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ μ½”λ“œλ₯Ό 살짝 μž…λ ₯ν•˜λ©΄ λ‹€μ‹œ λ‘œλ“œν•  λ•Œλ§ˆλ‹€μ΄ μˆ˜μ€€μ΄ ν•΄κ²°λ©λ‹ˆλ‹€. Level 2 μ—μ„œλŠ” " " νƒœκ·Έλ₯Ό 막고 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ 사진에 λ³΄μ΄λŠ” κ²ƒμ²˜λŸΌ HTML 폼에 μ•…μ˜μ μΈ 슀크립트 ꡬ문을 μ‚½μž…ν•˜μ—¬ ν•΄λ‹Ή νŽ˜μ΄μ§€μ— μ ‘κ·Όν•˜λŠ” λͺ¨λ“  μ‚¬μš©μž 듀을 νƒ€κΉƒμœΌλ‘œ ν•˜κ³  " Persi..

CHALLENGE
XSS-Game Level 1

μ„€λͺ…(λ²ˆμ—­) XSS ( ꡐ차 μ‚¬μ΄νŠΈ μŠ€ν¬λ¦½νŒ… ) λ²„κ·ΈλŠ” μ›Ή μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œ κ°€μž₯ 일반적이고 μœ„ν—˜ν•œ μœ ν˜•μ˜ 취약점 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ„±κ°€μ‹  λ²„κ±°λŠ” 적이 μ•±μ—μ„œ μ‚¬μš©μž 데이터λ₯Ό ν›”μΉ˜κ±°λ‚˜ μˆ˜μ •ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•  수 있으며, μ΄λŸ¬ν•œ μ•…μ˜μ μΈ 슀크립트λ₯Ό λ³΄λ‚΄λŠ” 법을 λ°°μ›Œμ•Ό ν•©λ‹ˆλ‹€ Googleμ—μ„œλŠ” μ΄λŸ¬ν•œ 버그가 μ–Όλ§ˆλ‚˜ μ€‘μš”ν•œμ§€ 잘 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ Google은 XSS 문제λ₯Ό μ°Ύκ³  μˆ˜μ •ν•˜λŠ” 데 맀우 진지 ν•˜μ—¬ κ°€μž₯ λ―Όκ°ν•œ μ œν’ˆμ—μ„œ 발견된 μœ„ν—˜ν•œ XSS 버그에 λŒ€ν•΄ μ΅œλŒ€ 7,500 λ‹¬λŸ¬λ₯Ό μš©λ³‘μ—κ²Œ μ§€λΆˆν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή κ²Œμž„μ„ 톡해 XSS 버그λ₯Ό μ°Ύκ³  ν™œμš©ν•˜λŠ” 방법을 λ°°μ›λ‹ˆλ‹€. 이 지식을 μ‚¬μš©ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ΄λŸ¬ν•œ 버그가 λ°œμƒν•˜λŠ” 것을 λ°©μ§€ν•˜μ—¬ 적을 ν˜Όλž€μŠ€λŸ½κ²Œ ν•˜κ³  λΆ„λ…Έν•˜κ²Œ ν•  κ²ƒμž…λ‹ˆλ‹€. μ‹œν—˜..

CHALLENGE