์ ๋จ๊ณ์ ์ฝ๋๋ฅผ ์คํ์์ผ ๋ณธ ๊ฒฐ๊ณผ ํ์ ์ฐฝ์ ๋์ฐ์ง ๋ชปํ๊ณ ์์ต๋๋ค. ๋ํ ์ ๋จ๊ณ๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ ์ ๋ ฅ๋๋ ํผ์ด ์กด์ฌํ์ง ์๊ณ DOM ๋ฐฉ์์ ํํ๋ก URL ์ ๋ ฅ์ฐฝ์ ์ฝ๋๋ฅผ ์ฝ์ ํจ์ผ๋ก์จ ํ์ ์ฐฝ์ ์คํ์ํค๋๋ก ํ๊ณ ์์ต๋๋ค. ํ์ด์ง ์์ค๋ฅผ ํ์ธํด๋ณด๋ ์คํฌ๋ฆฝํธ ํ๊ทธ ์์ ์ ์ ํ ์ฝ๋๋ฅผ ์ฝ์ ํด์ผ๋ง ํ์ ์ฐฝ์ด ์คํ๋๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ์ ๊ณ ๋ฏผํด๋ณผ ํ์๊ฐ ์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ 1. ;(์ธ๋ฏธ์ฝ๋ก ) 2. ์ฃผ์ ์ฐ์ javascript ์์ ;(์ธ๋ฏธ์ฝ๋ก )์ ๋ช ๋ น์ด ๋๋ฌ๋ค๋๊ฒ์ ๋ช ์์ ์ผ๋ก ๊ตฌ๋ถํด์ค๋๋ค. ์ฆ ์ธ๋ฏธ์ฝ๋ก ์์ด a=''alert('guleum') ํํ๋ก ์ ๋ ฅ๋๋ฉด "a" ๋ผ๋ ๋ณ์์ "alert" ๊ทธ๋ฆฌ๊ณ ์ดํ์ ์ฝ๋๊ฐ ๊ตฌ๋ถ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ฌธ๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์๋ฉ๋๋ค. ๋ง์ผ a='';alert('guleum'); ํ์์ผ๋ก ์ค๊ฐ์..
์ ๋จ๊ณ์์ ์ฌ์ฉํ ๊ณต๋ฐฑ ์นํ ๊ตฌ๋ฌธ์ ์ฝ์ ํด๋ณธ ๊ฒฐ๊ณผ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋์ง ์๊ณ ์์ต๋๋ค. ์ด๋ ํ ๊ตฌ๋ฌธ์ ๊ฒ์ฆํ๊ณ ์๋์ง ์์ค๋ฅผ ํตํด ํ์ธํด ๋ณธ ๊ฒฐ๊ณผ "()(๊ดํธ)"์ ํ์ ์ฐฝ์ ๋์์ฃผ๋ "alert"๊ฐ ํํฐ๋ง๋๊ณ ์์ต๋๋ค. ๊ดํธ์ ๊ฒฝ์ฐ ์ ๊ฑฐ๋ฅผ ํ๊ณ ์์ผ๋ฉฐ alert๋ -> Alert๋ก ๋ณ๊ฒฝ์ํด์ผ๋ก์จ ์๋ฏธ ์๋ ๊ตฌ๋ฌธ์ ๋ง๋ค๊ณ ์์ต๋๋ค. ๊ดํธ ์ ๊ฑฐ์ ์ฝ๋๋ฅผ ์ฐํํ ์ ์๋ ๋ฐฉ๋ฒ์ ` --> "back-tick" ๋ฐฑํฑ์ ์ฌ์ฉํด์ฃผ์๋ฉด ๋ฉ๋๋ค. ๋ํ alert๋ฅผ ํผ๋์ํค๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๋ฌธ์ ์๋ "confirm"์ด๋ "prompt"๋ก ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํด์ฃผ์๋ฉด ๋ฉ๋๋ค. ์ฑ๊ณตํ ํ์ด์ง ์์ค๋ฅผ ํ์ธํด๋ณด์๋ฉด ๊ฒ์ฆํ๋ alert ๋์ confirm์ผ๋ก ๋์ฒดํ๊ณ ๊ดํธ๋ฅผ ๋์ ํ ๋ฐฑ ํฑ์ผ๋ก ๊ตฌ๋ถ์ ํด์คฌ๊ธฐ ๋๋ฌธ์ ํ์ ์ฐฝ ์ฑ๊ณต์ ์ผ๋ก ..
11๋ฒ์งธ ๋ฌธ์ ์ธ " golem " ๋ฌธ์ ๋ฅผ ํ์ธํด๋ณด๋ฉด 2๊ฐ์ง ๊ฒ์ฆ์ ์ฐจ๋ฅผ ๊ฑฐ์น๊ณ ์์ต๋๋ค. if(preg_match('/prob|_|\.|\(\)/i', $_GET [pw])) exit("No Hack ~_~"); if(preg_match('/or|and|substr\(|=/i', $_GET[pw])) exit("HeHe"); ๊ฒ์ฆํ๊ณ ์๋ ๋ฌธ๊ตฌ๋ค์ ํ์ธํด๋ณด๋ฉด ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ฐ์ฐ์์ธ " or, and, = " ๊ทธ๋ฆฌ๊ณ ๋ฌธ์์ด์ ์ถ๋ ฅํด์ฃผ๋ ํจ์์ธ " substr " ๊น์ง ๊ฒ์ฆ์ ํ๊ณ ์์ต๋๋ค. ์ ๋จ๊ณ์ ๋ ๋ฒจ์์๋ or์ and ์ฐ์ฐ์ ๋์ฒด ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ง๋ง substr ํจ์๊น์ง ์ฐํํด์ผ ๋๋ ์ข ๋ ๊น๋ค๋ก์์ก๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. $query = "select pw from prob_golem where id..
10๋ฒ์งธ ๋ฌธ์ ์ธ " skelton "์ ๋๋ค. if(preg_match('/prob|_|\.|\(\)/i', $_GET [pw])) exit("No Hack ~_~"); ๊ฒ์ฆ๋๋ ๋ฌธ์์ด์ ํ์ธํด ๋ณด๋ฉด ์ด์ฒ๋ผ ํน์๊ธฐํธ ๋ช๊ฐ๋ง ๊ฒ์ฆ์ ํ๊ณ ์์ต๋๋ค. $query = "select id from prob_skeleton where id='guest' and pw='{$_GET [pw]}' and 1=0"; ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ๋ณ์๋ " pw='{$_GET[pw]} " ์ด ๋ถ๋ถ์ ์ฌ์ฉํ๋ฉด ๋ ๊ฑฐ ๊ฐ์ง๋ง " and 1=0 " ์ฐ์ฐ์๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ '1'='1' ํํ์ ์ฐธ๊ฐ์ ๋์ ํด๋ ๊ฑฐ์ง ๊ฐ์ผ๋ก ์ธ์์ ํ๊ณ ์์ต๋๋ค. if($result ['id'] == 'admin') solve("skeleton"); ๋ํ ..
9๋ฒ์งธ ๋ฌธ์ ์ธ " vampire " ๋จ๊ณ์ ๋๋ค. ์ฟผ๋ฆฌ๋ฌธ์ ์ ๋ ฅ๋ฐ์ ์คํ๋๋ ๋ณ์๋ " id='{$_GET [id]} " ๋ก ์ ์ ํ์๋ ๋ฌธ์ ๋ค๊ณผ ์ ์ฌํ๊ฒ ํค์๋ ์ฐํ๋ฅผ ํด์ผ ๋ ๊ฒ ๊ฐ์ ๋ณด์ ๋๋ค. $_GET [id] = str_replace("admin", "",$_GET [id]); replace ํจ์๋ฅผ ํตํด ์ฟผ๋ฆฌ๋ฌธ์ " admin " ์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ์คํ์ด ๋์ง ์์ต๋๋ค. ๋ํ ๋, ์ ๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ ์๊ธฐ ๋๋ฌธ์ ADMIN ๊ฐ์ ๋๋ฌธ์๋ก ์ ๊ทผํด๋ ์คํจํ๊ธฐ ๋๋ฌธ์ ์ด๋ด ๋๋ ํผ๋ํ ๊ธฐ๋ฒ์ ์ฌ์ฉํด์ ํด๊ฒฐํ๋ฉด ๋ฉ๋๋ค. ๋ธ๋๋ฆฌ์คํธ๋ก ํด๋น ํค์๋๋ฅผ ๋์๋ฌธ์ ๊ตฌ๋ถ ์์ด ์ ๊ฑฐํ๊ณ ์๋ ๊ฒฝ์ฐ์๋ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์์ด ์ฌ์ด์ ์ฝ์ ํ๋ ํผ๋ํ ๊ธฐ๋ฒ์ ์ด์ฉํ๊ฒ ๋๋ฉด ์ค๊ฐ์ " admin " ํค์๋๋..
" troll " ๋ฌธ์ ์ ๊ฒฝ์ฐ ์ฟผ๋ฆฌ๋ฌธ์ ์คํ์์ผ์ฃผ๋ ๋ณ์๊ฐ pw ๊ฐ ์๋ " id='{$_GET[id]} " ์ฆ id ์ธ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ฒ ๋ฌธ์ ๋ ํจ์ค์๋๋ฅผ ๋์ถ์ํค๋ ๊ฒ์ด ์๋ ํด๋น ๊ณ์ ์ผ๋ก ๊ทธ๋ฅ ์ ๊ทผํ๊ธฐ๋ง ํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํด๋น ๋ฌธ์ ๋ ํน์ " ํค์๋ "๋ฅผ ๋ธ๋๋ฆฌ์คํธ ๋ฐฉ์์ผ๋ก ํํฐ๋ง ์ ์ฑ ์ ๊ฑธ์ด๋๋ฉด ์ด๋ป๊ฒ ์ ๊ทผ์ ์๋ํด ๋ณผ ๊ฒ์ธ๊ฐ? ์ ๋ํ ๊ณ ๋ฏผ์ ํด๋ณด๋ ๋ฌธ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฝ๊ฒ ์๊ฐํ๋ฉด ๊ต์ฅํ ์ฌ์ด ๋ฌธ์ ์ด๊ณ ์ด๋ ต๊ฒ ์๊ฐํ๋ฉด ๋๋ฌด ๋ฉ๋ฆฌ ๋์๊ฐ ์๋ ์๋ ๋ฌธ์ ์ ๋๋ค. MYSQL ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์๋ฌธ์ ๊ตฌ๋ถ์ด ์์ด์ " admin " = " ADMIN "์ด๋ ๋๊ฐ์ ๊ฒฐ๊ณผ๋ก ๋ฐ์๋ค์ด์ง๋ง ์๋จ์ ์์ค๋ฅผ ๋ณด์๋ฉด preg_match์ ์ ์ธ๋ ์ฝ๋๊ฐ ๋ฌธ์ ์ธ ๊ฒ์ผ๋ก ํ์ ๋ฉ๋๋ค. /admin/..
7๋ฒ์งธ ๋ฌธ์ ์ธ " orge " ๋ ์ ์ ํ์๋ " orc " ๋ฌธ์ ์ ์ ์ฌํฉ๋๋ค. " pw='{$_GET [pw]} " ์์ ์ฟผ๋ฆฌ๋ฌธ์ ์ฝ์ ํ์ฌ ์คํ๋๋ ํํ์ด์ง๋ง ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ ์ด ์กด์ฌํฉ๋๋ค. ๊ฒ์ฆ๊ตฌ๋ฌธ 1. ๊ธฐ์กด admin ๊ณ์ ์ด์ธ์ guest ๊ณ์ ์ด ์ถ๊ฐ์ ์ผ๋ก ์กด์ฌํจ 2. or , and ์ฐ์ฐ์๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ๊ฒ์ฆํ๊ณ ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ํฌ์ธํธ ๋ถ๋ถ์ $query = "select pw from prob_orge where id='admin' and pw='{$_GET [pw]}'"; if(($result ['pw']) && ($result['pw'] == $_GET ['pw'])) solve("orge"); ์์ฒ๋ผ 'admin' ๊ณ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋๋ก ์ถ๊ฐ์ ์ผ๋ก ์ ์ธํด์ค์ผ ํ๋ฉฐ, ์ ๋ ฅ๋ p..