16 ๋ฒ์งธ ๋ฌธ์ ์ธ "succubus"์ ๋๋ค. if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/\'/',$_GET[id])) exit("HeHe"); if(preg_match('/\'/',$_GET[pw])) exit("HeHe"); ๊ฒ์ฆํ๊ณ ์๋ ์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ฉด preg_match ํจ์๋ฅผ ํตํด " ' "(์ฑ๊ธ์ฟผํฐ) ๋ฅผ ํํฐ๋งํ๊ณ ์๋๋ฐ ๋ฌธ์ ๋ " id " ๋ณ์์ " pw " ๋ณ์ ๋ชจ๋๊ฒ์ฆํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฐํํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ด์ผ ํฉ๋๋ค. $query = "select id f..
15 ๋ฒ์งธ ๋ฌธ์ ์ธ "assassin"์ ๋๋ค. ํด๋น ๋ฌธ์ ์ ๊ฒฝ์ฐ "$_GET[pw]" ๋ผ๋ ๋ณ์์ ์ฟผ๋ฆฌ๋ฌธ์ ์ ๋ ฅ๋ฐ์ ์คํ๋๋ ํํ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. if(preg_match('/\'/i', $_GET[pw])) exit("No Hack ~_~"); ์ ๋ ฅ๊ฐ์ ๊ฒ์ฆํ๋ ๋ถ๋ถ์ธ "preg_match" ํจ์๋ฅผ ๋ณด๋ฉด ์ฑ๊ธ์ฟผํฐ๋ฅผ ๊ฒ์ฆํ๊ณ ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("assassin"); ์ด์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ ๋ ฅ๋ฐ์ pw์ ๊ฐ์ด "admin" ๊ณ์ ์ด์ด์ผ ํ๋ค๋๊ฒ ๊ฐ์ต๋๋ค. ์๋จ์ ์ฟผ๋ฆฌ๋ฌธ์ ๋ณด๋ฉด =(๋ฑํธ) ๋์ " like " ๊ตฌ๋ฌธ์ ์ฐ๊ณ ์๋ค์ *like๋ ..
์ ๋จ๊ณ์์์ ์ฝ๋๋ฅผ ์ฝ์ ํด ๋ณธ ๊ฒฐ๊ณผ ํ์ ์ฐฝ์ด ์คํ๋์ง ์๊ณ ์์ต๋๋ค. ํ์ด์ง ์์ค๋ฅผ ํ์ธํด์ ๊ฒ์ฆ๋๊ณ ์๋ ์ฝ๋๋ฅผ ํ์ธํด ๋ณธ ๊ฒฐ๊ณผ ์ด๋ฒ์๋ "(๋๋ธ ์ฟผํฐ)๋ฅผ --> ์ ๊ทํํ์์ผ๋ก ์นํํ์ฌ ์๋ฏธ ์๋ ๋ฌธ์ฅ์ผ๋ก ๋ง๋ค๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ (๊บฝ์ ) ์กฐ์ฐจ ์นํํ๊ณ ์์ด์ ์ด๋ฒ์๋ ์ถ๊ฐ์ ์ผ๋ก ๋ ๊ฐ์ง์ ์ฐํ๋ฐฉ๋ฒ์ ์๊ฐํด๋ด์ผ ๋ฉ๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ 1. '"(์ฑ๊ธ์ฟผํฐ ์ ๋๋ธ ์ฟผํฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฌธ์์ด์ ์ถ๋ ฅํ ์ ์๋ ๋ฐฉ๋ฒ์?) 2. ๋ฌธ์๋ก ๋ณํํด์ค๋๋ค. g -> 103 u -> 117 l -> 108 e -> 101 u -> 117 m -> 109 ์ฑ๊ณต์ ์ผ๋ก '(์ฑ๊ธ ์ฟผํฐ), "(๋๋ธ ์ฟผํฐ), (๊บฝ์ ) ๊ฒ์ฆ์ ์ฐํํ์ฌ ๋ฌธ์์ด์ ์ถ๋ ฅํ์ต๋๋ค. ์ฑ๊ณต์ ์ผ๋ก ํ์ ์ฐฝ์ ๋์ด๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. Exploit Code..
14๋ฒ์งธ ๋ฌธ์ ์ธ " giant "์ ๋๋ค. if(strlen($_GET[shit])>1) exit("No Hack ~_~"); if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe"); ์ด๋ฒ์๋ id ๋ pw ๋ณ์๊ฐ ์๋ shit ์ด๋ผ๋๋ณ์๋ฅผ ์ฌ์ฉํด์ผ ๋๋ฉฐ ์ ๋ ฅ๋๋ ๊ฐ์ ๊ธธ์ด๋ 1๋ณด๋ค ๊ธธ๋ฉด " No Hack " ์ด๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ๋์ฐ๊ณ ์์ต๋๋ค. ๋ํ |\n|\r|\t/ ๋ฑ ์ฌ๋ฌ ๊ณต๋ฐฑ ์ฐํ ๊ธฐ๋ฒ์ ์ฐจ๋จํ๊ณ ์๊ธฐ์ ํ์ฉ๊ฐ๋ฅํ ๊ณต๋ฐฑ ๊ตฌ๋ฌธ์ ์ฐพ์์ผ ํฉ๋๋ค. $query = "select 1234 from{$_GET[shit]}prob_giant where 1"; if($result[1234]) solve("giant"); ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ํด์ ๊ฒฐ๊ด๊ฐ์ 1234 ๊ฐ ์ถ๋ ฅ..
13๋ฒ์งธ ๋ฌธ์ ์ธ " bugbear "์ ๋๋ค. bugbear์ ๊ฒฝ์ฐ ๊ฒ์ฆํ๋ ํค์๋๊ฐ ๋ง์ด ๋์ด๋ ์ฐํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํด์ผ ๋ฉ๋๋ค. if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe"); ์๋กญ๊ฒ ๊ฒ์ฆํ๋ ํํฐ๋ง์ or ๊ตฌ๋ฌธ ๋์ ์ฌ์ฉ๋์๋ " like " ๋ฅผ ๊ฒ์ฆํ๊ณ hex ์ฝ๋ ์คํ ๋ฐฉ์ง๋ฅผ ์ํด "0x"๊น์ง ๊ฒ์ฆํ๊ณ ์์ต๋๋ค. ๋ํ " ascii " ์ฝ๋์ฌ์ฉํ๋๊ฒ๊น์ง ๋ง๊ณ ์๊ธฐ์ " ord " ๋ฅผ..
12๋ฒ์งธ ๋ฌธ์ ์ธ "darkknight"๋ฅผ ๋ณด์๋ฉด preg_match ํจ์๋ฅผ ์ฌ์ฉํ ๋ค์ํ ํํฐ๋ง ๊ฒ์ฆ์ด ์ถ๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. if(preg_match('/prob|_|\.|\(\)/i', $_GET [no])) exit("No Hack ~_~"); if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); if(preg_match('/\'|substr|ascii|=/i', $_GET [no])) exit("HeHe"); ๋น๊ต ์ฐ์ฐ์์ธ or ๋ and ๋ ๊ฒ์ฆ์ ํ์ง ์๊ณ ์์ง๋ง ์ ๋จ๊ณ๋ค๊ณผ ๋ค๋ฅด๊ฒ ์ฑ๊ธ ์ฟผํฐ( ' )๋ฅผ ์ฐจ๋จํ๊ณ ์๊ธฐ ๋๋ฌธ์ " ์ฑ๊ธ ์ฟผํฐ "๋ฅผ ๋์ ํ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. ํํฐ๋ง ์ฐํ = --> like ๋๋ between์ ์ฌ์ฉ subs..
์ ๋จ ๊ณ์ ๋ง์ฐฌ๊ฐ์ง๋ก URL์ ์ ๋ ฅ๊ฐ์ ๋ฐ์ ํ์ ์ฐฝ์ ๋์ฐ๋๋ก ํ๊ณ ์์ต๋๋ค. ์ด๋ค ๊ฒ์ฆ์ ํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ ๋จ๊ณ์์์ ์ฝ๋๋ฅผ ์ฝ์ ํ์ฌ ํ์ด์ง์ ์์ค๋ฅผ ํ์ธํด ๋ณธ ๊ฒฐ๊ณผ ์ด๋ฒ์๋ '(์ฑ๊ธ ์ฟผํฐ)๋ฅผ --> \' ํํ๋ก ๋ฐฑ ์ฌ๋์๋ฅผ ์ถ๊ฐ๋ก ๋ถ์ฌ์ ๊ฒ์ฆํ๊ณ ์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ 1. "(๋๋ธ์ฟผํฐ) 2. \(๋ฐฑ์ฌ๋์ ํ์ฉ) ์ฐ์ ('guleum') --> (\'guleum\')๋ก ์นํ๋๊ณ ์๊ธฐ ๋๋ฌธ์ '(์ฑ๊ธ์ฟผํฐ) --> "(๋๋ธ์ฟผํฐ)๋ก ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํด์ฃผ์๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ค์์ด ์ค์ํฉ๋๋ค. ํ์ด์ง ์์ค๋ฅผ ๋ณด์๋ฉด a ๋ณ์์๋ '(์ฑ๊ธ ์ฟผํฐ)๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋๊ฐ ๋ถ์ด์๊ธฐ ๋๋ฌธ์ ๋ซ์ ๋๋ '(์ฑ๊ธ ์ฟผํฐ)๋ฅผ ์ฌ์ฉํด์ ๋ฌถ์ด์ค์ผ ๋ฉ๋๋ค. ์ด๋ด ๋๋ \(๋ฐฑ ์ฌ๋์)๋ฅผ '\' ์ฑ๊ธ ์ฟผํฐ๋ก ๋ฌถ์ด์ฃผ๋ฉด \(๋ฐฑ์ฌ๋์)์ ์ํด ..