์ ๋จ๊ณ์์ ์ฌ์ฉํ ์ฌ์ฉ๋ 2๊ฐ์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋น์ทํ์ง๋ง ์กฐ๊ธ ๋ค๋ฅธ ํํ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ src=''(์ฑ๊ธ ์ฟผํฐ 2๊ฐ)๋ก ๋ฌถ์ด์ฃผ๊ณ /(์ฌ๋์)๋ฅผ ํตํด ๊ตฌ๋ถ์ ํด์ฃผ์์ง๋ง src=""(๋๋ธ ์ฟผํฐ 2๊ฐ)๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ /(์ฌ๋์) ์์ด HTML์์์ ๊ตฌ๋ถ์ ํด์ค์ ์ถ๊ฐ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋ฉ๋๋ค.
6๋ฒ์งธ ๋ฌธ์ " darkelf "์ ๋๋ค. ORC ๋ ๋ฒจ์์ ์๊ฐ์ด ์ข ์์๋์์ง๋ง ๊ทธ ์ดํ๋ฌธ์ ๋ ๊ธ๋ฐฉ ํด๊ฒฐ๋๋ ๋ฌธ์ ๋ค์ด ๋ง์ต๋๋ค.ํ์ฌ ์์ค๋ฅผํ์ธํด๋ณด๋ฉด ์ฟผ๋ฆฌ๋ฌธ์ ๋ฐ์ ์คํ๋๋ ์ฝ๋๋ " $_GET [pw] ์ ๋๋ค. if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw$_GET [pw])) exit("No Hack ~_~"); if(preg_match('/or|and/i', $_GET[pw$_GET [pw])) exit("HeHe"); ๋ ๋ฒ์งธ ํํฐ๋ง ๊ฒ์ฆ์ ๋ณด์๋ฉด ๋ฌธ์์ด " or " ์ " and " ๊ตฌ๋ฌธ์ ๊ฒ์ฆํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฐํํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผ ๋ฉ๋๋ค. if($result ['id']'admin') solve("darkelf"); ๋ํ ํด๋น๋ถ๋ถ์ ๋ณด์๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ..
wolfman ๋ฌธ์ ๋ฅผ ํ์ธํด๋ณด๋ฉด and pw='{$_GET [pw]} ํด๋น pw์ ์ฝ์ ๋ ๊ฐ์ผ๋ก ์คํ์ด ๋๊ณ ์์ต๋๋ค. ์กฐ๊ธ ํน์ดํ ์ ์ด ์๋ค๋ฉด ์ ๋จ๊ณ์์๋ " admin " ๊ณ์ ์ด ์ด๋ฏธ ์ ์ธ๋ ์ํ์์ ์งํํ์์ง๋ง ์ด๋ฒ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก " guest " ๊ณ์ ์ผ๋ก ์ ์ธ๋์ด ์์ต๋๋ค. if(preg_match('/prob|_|\.|\(\)/i', $_GET [pw])) exit("No Hack ~_~"); if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~"); ๊ฒ์ฆ๋๋ ํํฐ๋ง ํจ์๊ฐ ๋ ์ถ๊ฐ๋์์ต๋๋ค. ๋ ๋ฒ์งธ preg_match ์์ญ์ ๋ณด์๋ฉด " / / " ์ฆ ๊ณต๋ฐฑ ๊ฒ์ฆํ๊ณ ์๋๊ฒ์ ํ์ธํ์ค ์ ์์ต๋๋ค. if($result['id'] == 'ad..
Lord of Sql injection์์ " orc " ๋ ๋ฒจ์ ๊ฒฝ์ฐ ์ ๋จ๊ณ์์ ์งํํ๋ ๋ฐฉ์๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ ์งํํด์ผ ๋ฉ๋๋ค. ์ฐ์ pw=' {$_GET[pw]}'"; ์ ๋ณด๋ค์ํผ ์ฟผ๋ฆฌ๋ฌธ์ ์ฝ์ ํ ๋ณ์์ ์ข ๋ฅ๋ ํ ๊ฐ์ด๋ฉฐ id='admin'์ด๋ผ๊ณ ์ ์ธ์ด ๋์ด์๋ ์ํ์ ๋๋ค. if(($result ['pw']) && ($result['pw'] == $_GET ['pw'])) solve("orc"); ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์์ค์์ ํ์ธ๋๋ ๊ฒ์ฒ๋ผ $_GET ๋ฐฉ์์ผ๋ก ๋ ๊ฒจ ๋ฐ์ pw ๊ฐ๊ณผ admin์ ์ค์ pw ๊ฐ๊ณผ ๋์ผํด์ผ ๋ฌธ์ ํด๊ฒฐ์ด ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. $_GET [pw] = addslashes($_GET [pw]); ๋ํ "addlslashes" ํจ์์ ์ํด ์ฑ๊ธ ์ฟผํฐ์ ๋ํ ์กฐ์น๋ฅผ ํด๋ ๊ฒ ๊ฐ์..
$query = "select id from prob_goblin where id='guest' and no={$_GET[no]}"; goblin ๊ฐ์ ๊ฒฝ์ฐ ์ ๊ณผ๋ ๋ค๋ฅธ ๊ฒ no={$_GET [no]} ์์ญ์ ์ฟผ๋ฆฌ๋ฌธ์ ์ฝ์ ํ์ฌ admin ๊ณ์ ์ผ๋ก ์ ๊ทผํด์ผ ๋ฉ๋๋ค. if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); ๋ํ preg_match์ ์์ญ์ด ํ๋ ๋ ์ถ๊ฐ๋๋ฉด์ ์ฑ๊ธ ์ฟผํฐ(')์ ๋๋ธ์ฟผํฐ(") ๊ณผ ์กด์ฌํ ๊ฒฝ์ฐ " No Quotes " ํ์ด์ง๋ก ๋๊น์ผ๋ก์จ ํํฐ๋ง ์์ญ์ด ์ถ๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ฑ๊ธ ์ฟผํฐ๋ฅผ "..
preg_match ํจ์์ ์ ์ธ๋์ด ์๋ ํํฐ๋ง ํญ๋ชฉ๋ค์ ๋ณด๋ฉด ์ ๋จ๊ณ์ ํฌ๊ฒ ์ฐจ์ด ์์ด ๋ณด์ ๋๋ค. ํ์ง๋ง pw=์ md5('')๊ฐ ์ ์ธ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ ๋จ๊ณ ๋ ๋ฒจ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์ฟผ๋ฆฌ๋ฌธ์ ์ฝ์ ํด๋ณด๋ฉด md5('') ๊ฐ ๋๋ถ์ ๊ตฌ๋ฌธ์ด ์ฑ๊ณตํ์ง ์๊ณ ์์ต๋๋ค. ๊ดํธ ๊ตฌ๋ถ์ด ๋ช ํํ์ง ์์์ค ์๊ณ ๊ดํธ๋ก ๊ตฌ๋ถํด ๋ดค์ง๋ง rubiya๋ฅผ ํ์ํ๋ค๋ ๋ฌธ๊ตฌ๊ฐ ๋์ค๊ณ ์ฑ๊ณต๋์๋ค๋ ๋ฌธ๊ตฌ๋ ๋์ค์ง ์์ต๋๋ค. ์์ค ๋ถ๋ถ์ ์ ๋๋ก ํ์ธํด๋ณด๋ [ id ] == admin์ผ๋ก ๋ ๊ฒ์ผ๋ก ๋ณด์ ์ ๋ ฅ๋๋ id๋ "admin" ์ด์ฌ์ผ ๋๋ค๋ ๊ฒ์ ๋ค๋ฆ๊ฒ ๊นจ๋ฌ์์ต๋๋ค. ๋ํ ์ ์ ๋ ฅ๋๋ ์ฟผ๋ฆฌ๋ฌธ์ md5('') ๊ฐ ์๋์ง ์๊ฐํด๋ด๋ ์กด์ฌ์ ์๋ฏธ๋ฅผ ์ ์๊ฐ ์์์ง๋ง ๋จ์ ๋ฌธ์ ํด๊ฒฐ์ ๋ง๊ธฐ ์ํ ๋ํ์ค ๊ฐ์ ์ญํ ๋ก ..
์ฒซ ๋ฒ์งธ ๋จ๊ณ์ธ gremlin์์ preg_match ํจ์๋ฅผ ๋ณด๋ฉด ๋ณ๋ค๋ฅธ ์ ๋ ฅ๊ฐ ๊ฒ์ฆ์ ํ์ง ์๊ณ ID์ PW ๋ถ๋ถ์ ์ฟผ๋ฆฌ๊ฐ ๋ฐ๋ก ์ฝ์ ๋๊ณ ์๊ธฐ์ ์ฝ์ ๋๋ ์ฟผ๋ฆฌ๋ฌธ์ด " ์ฐธ " ๊ฐ์ ๊ฐ์ง๋๋ก " or " ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ ์์ฑํด์ฃผ์๋ฉด ์ฝ๊ฒ ํต๊ณผ๋ฉ๋๋ค. preg_match ํจ์์ ์ง์ ํด๋ ,/(\) ๋ฑ ์ด ์ ๋ ฅ๋ ๊ฒฝ์ฐ " No Hack "์ด๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ๋์ฐ๋ฉฐ ์คํจํ๊ณ ์์ผ๋ ํด๋น ๋ฌธ๊ตฌ๋ ํผํด์ ์์ฑํ๋ฉด ๋๊ฒ ์ต๋๋ค. if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); // do not try to attack another table, database! if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exi..