ํฐ์คํ ๋ฆฌ ๋ทฐ
์ฒซ ๋ฒ์งธ ๋จ๊ณ์ธ 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])) exit("No Hack ~_~");
or ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋๋ก ํ๊ฒ ์ต๋๋ค. or ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ ์ค ํ ๊ฐ์ง๋ง ์ฐธ ์ด์ฌ๋ ๋ฌด์กฐ๊ฑด " ์ฐธ "์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
$query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
$_GET ๋ฐฉ์์ผ๋ก ์ ๋ฌํ๊ณ ์๊ธฐ ๋๋ฌธ์ URL์ php ๋ค์ ์ ๋งค๊ฐ๋ณ์๋ฅผ ์์ฑํด์ฃผ๊ณ ์ธ์ ๊ฐ์ ๋ง๋ค์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
" % " ๋ all ๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ " A% " ๋ผ๊ณ ์ ๋ ฅ๋ ๊ฒฝ์ฐ A ๋ก ์์ํ๋ ๋ชจ๋ ID ๋ฅผ ์ด๊ฑฐ, pw= ์์ญ์ ํ์ธํด๋ณด๋ฉด '1'='1'๋ก ์ฐธ ๊ฐ์ด ์ฑ์ฌ๋์ด ์์ต๋๋ค.
์ด๊ฒ์ SQL ๊ตฌ๋ฌธ์ "where" ์ ์ ์ฝ๊ฒ ๋ฌด๋ ฅํ์ํค๋ ๊ตฌ๋ฌธ์ด๊ธฐ์ ์ฟผ๋ฆฌ๊ฐ ์ฑ์ฌ๋ ๊ฒฝ์ฐ ์ ์ฅ๋์ด ์๋ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๊ฒ ๋ฉ๋๋ค.
PW ์๋ ์ฝ์ ํ์ง ์๊ณ ID ์์ญ์๋ง ์ฐธ ์ฟผ๋ฆฌ๋ฌธ์ ์ฝ์ ํ์ฌ ํด๋ฆฌ์ด๋ ๊ฐ๋ฅํฉ๋๋ค. ์์ ์ฟผ๋ฆฌ๋ฌธ์ ๋ณด๋ ID ๋ท๋ถ๋ถ์ ์ฃผ์์ ์ฝ์ ํ์ฌ ํด๋น ์ ๋ ฅ๋ ์ฟผ๋ฆฌ๋ง ์คํ๋๋๋ก ํ๋ค๋ ๊ฑธ ๊น๋นกํ๋ค์.
ํ ์ค ์ฃผ์์ธ " --(๊ณต๋ฐฑ) "์ ์ถ๊ฐํ์ฌ ํด๋น ๊ตฌ๋ฌธ ์ดํ๋ถํฐ ์ค๋ ๋ด์ฉ๋ค์ ๋ชจ๋ ์ฃผ์์ฒ๋ฆฌํ๊ฒ ๋๊ธฐ์ PW ์์ญ์๋ ์ ๋ ฅํ์ง ์์๋ ์ฑ๊ณต์ ์ผ๋ก ํด๋ฆฌ์ดํฉ๋๋ค. ์ฃผ์์ ์ข ๋ฅ์๋ ๋ฒ์ ์ง์ ๊ฐ๋ฅํ ์ฃผ์๊ณผ ํ ์ค์ ์ฃผ์ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ฃผ์์ฒ๋ฆฌ
ํ์ค -> # ๋๋ --%20
๋ค์ค -> /*์ฃผ์์ฒ๋ฆฌ*/
'CHALLENGE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LOS] goblin ํ์ด(3) (0) | 2020.12.05 |
---|---|
[LOS] cobolt ํ์ด(2) (0) | 2020.12.05 |
XSS Challenges 2 (0) | 2020.12.04 |
XSS Challenges 1 (0) | 2020.12.03 |
XSS Challenges 0 (0) | 2020.12.02 |