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

CHALLENGE

[LOS] ORC ํ’€์ด(4)

๐ŸŒง: 2020. 12. 5.

Lord of Sql injection์—์„œorc " ๋ ˆ๋ฒจ์˜ ๊ฒฝ์šฐ ์ „ ๋‹จ๊ณ„์—์„œ ์ง„ํ–‰ํ–ˆ๋˜ ๋ฐฉ์‹๋“ค๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ง„ํ–‰ํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค

 

์šฐ์„  pw=' {$_GET[pw]}'"; ์„ ๋ณด๋‹ค์‹œํ”ผ ์ฟผ๋ฆฌ๋ฌธ์„ ์‚ฝ์ž…ํ•  ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜๋Š” ํ•œ ๊ฐœ์ด๋ฉฐ id='admin'์ด๋ผ๊ณ  ์„ ์–ธ์ด ๋˜์–ด์žˆ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

 

if(($result ['pw']) && ($result['pw'] == $_GET ['pw'])) solve("orc"); 

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์†Œ์Šค์—์„œ ํ™•์ธ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ $_GET ๋ฐฉ์‹์œผ๋กœ ๋…๊ฒจ ๋ฐ›์€ pw ๊ฐ’๊ณผ admin์˜ ์‹ค์ œ pw ๊ฐ’๊ณผ ๋™์ผํ•ด์•ผ ๋ฌธ์ œ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

$_GET [pw] = addslashes($_GET [pw]);

๋˜ํ•œ  "addlslashes" ํ•จ์ˆ˜์— ์˜ํ•ด ์‹ฑ๊ธ€ ์ฟผํ„ฐ์— ๋Œ€ํ•œ ์กฐ์น˜๋ฅผ ํ•ด๋‘” ๊ฒƒ ๊ฐ™์€๋ฐ ์ผ๋‹จ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ™•์ธํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ฟผ๋ฆฌ๋ฌธ์ด ์‹คํ–‰๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ "pw"์— ์ฐธ๊ณผ ๊ฑฐ์ง“ ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฌธ๊ตฌ๋ฅผ ์‚ฝ์ž…ํ•ด๋ณธ ๊ฒฐ๊ณผ ์ฐธ์œผ๋กœ ์ž…๋ ฅ ์‹œ " Hello admin "์ด๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๊ณ  ๊ฑฐ์ง“ ๊ฐ’์„ ์ผ๋ ฅ ํ•  ๊ฒฝ์šฐ ์•„๋ฌด๋Ÿฐ ๋ฐ˜์‘์ด ์—†๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๊ฒƒ์„ ํ† ๋Œ€๋กœ BSQLI(Blind Sql Injection) ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ admin์˜ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ์–ด๋–ค ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ฐธ, ๊ฑฐ์ง“์œผ๋กœ ์œ ์ถ”ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์šฐ์„  ํŒจ์Šค์›Œ๋“œ์˜ ๊ธธ์ด๋ฅผ ์œ ์ถ”ํ•˜๊ธฐ ์œ„ํ•ด "length"๋ฅผ ์ด์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. pw์˜์—ญ์— "%"๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ์€ ์–ด์ฐจํ”ผ admin ๊ณ„์ •๋งŒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค๊ทธ๋ฆฌ๊ณ  ">1#"์˜ ์˜๋ฏธ๋Š” ์ถœ๋ ฅ๋œ ํŒจ์Šค์›Œ๋“œ์˜ ๊ธธ์ด๊ฐ€ 1๋ณด๋‹ค ํฌ๋ฉด "์ฐธ" ์•„๋‹ˆ๋ฉด "๊ฑฐ์ง“" ํ˜•ํƒœ๋กœ #์„ ์‚ฌ์šฉํ•ด ์ดํ›„์˜ ๊ตฌ๋ฌธ์€ ๋ชจ๋‘ ์ฃผ์„์ฒ˜๋ฆฌํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

ํŒจ์Šค์›Œ๋“œ๋Š” 1๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ฐธ ๊ฐ’์ธ "Hello admin" ์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

 

>1# ~ >7# ๊นŒ์ง€๋Š” ๋ชจ๋‘ "Hello admin" ์ด ์ถœ๋ ฅ๋˜์—ˆ์ง€๋งŒ >8# ์˜ ์ฐจ๋ก€์—์„œ๋Š” ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„ ํŒจ์Šค์›Œ๋“œ๋Š” "8์ž๋ฆฌ" ์ธ ๊ฒƒ์œผ๋กœ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํŒจ์Šค์›Œ๋“œ ์ž๋ฆฌ์ˆ˜๋ฅผ ํŒŒ์•…ํ–ˆ์œผ๋‹ˆ ์ด์ œ 8์ž๋ฆฌ ์ค‘ 1์ž๋ฆฌ์”ฉ ์–ด๋–ค ๋ฌธ์ž, ์ˆซ์ž, ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋ก์‹œ ๋„๊ตฌ์ธ " burp suite " ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ๋ฌด์ž‘์œ„๋กœ ๋Œ€์ž…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋ฌธ์ž์—ด์„ ํ•˜๋‚˜์”ฉ ์œ ์ถ”ํ•˜๊ธฐ ์œ„ํ•œ ์ ๋‹นํ•œ ์ฟผ๋ฆฌ๋ฌธ์„ ์‚ฝ์ž…ํ•˜๊ณ  ํ”„๋ก์‹œ๋กœ ์žก์€ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค. URL ์ธ์ฝ”๋”ฉ์ด ๊ฐ™์ด ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง๊ด€์ ์œผ๋กœ ๋ณด์ด์ง„ ์•Š์ง€๋งŒ ์‚ฌ์šฉ๋œ ํ•จ์ˆ˜๋ฅผ ํ™•์ธํ•ด๋ณผ ํ•„์š”๋Š” ์žˆ์Šต๋‹ˆ๋‹ค.

 

์šฐ์„  "substr" ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ pw์— ๋‹ด๊ธด ํŒจ์Šค์›Œ๋“œ๋ฅผ 1 ๊ธ€์ž์”ฉ ๊ฐ€์ ธ์˜ค๊ณ  --> ascii ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ถ”์ธกํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

substr ๊ณผ ascii ์ฝ”๋“œ

" substr(pw,1,1) " ๋Š” pw๋ผ๋Š” ๋ฌธ์ž์—ด์—์„œ 1๋ฒˆ์งธ ์ž๋ฆฌ์—์„œ 1๊ธ€์ž ๊ฐ€์ ธ์˜ค๋ผ๋Š” ์˜๋ฏธ ์ด๋ฉฐ

ascii(substr(pw,1,1)=ascii์ฝ”๋“œ " ์ฆ‰ "substr" ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ "pw"์˜ ์›ํ•˜๋Š” ์œ„์น˜์— ๊ฐ’์„ "ascii()" ์•„์Šคํ‚ค๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ๋งˆ์ง€๋ง‰ "=ascii์ฝ”๋“œ"์™€ ๋น„๊ตํ•ด๊ฐ€๋ฉด์„œ ์ฒซ ๋ฒˆ์งธ ํŒจ์Šค์›Œ๋“œ ๊ฐ’์ด ascii ์ฝ”๋“œ๋กœ ์ด๊ฑฐ๋‹ˆ??๋ผ๋Š” ์ฟผ๋ฆฌ๋ฌธ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฝ์ž…ํ•ด์„œ ์ฐธ, ๊ฑฐ์ง“ ๊ฐ’์œผ๋กœ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

" ๋ฒ„ํ”„ " ์˜ cluster bomb์„ ํ™œ์šฉํ•ด์„œ (pw, ํƒ€๊นƒ(1),1)=ํƒ€๊นƒ(2)%23  " ํƒ€๊นƒ(1,2) " ๋ถ€๋ถ„์— ํ•œ ์ž๋ฆฌ์”ฉ ๋Œ€์ž…ํ•ด๊ฐ€๋ฉด์„œ ํ™•์ธํ•ด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

ํƒ€๊นƒ(1) ์—๋Š” ๋ช‡ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์„ ๊ฒ€์‚ฌํ•  ๊ฒƒ์ธ์ง€ ํ™•์ธํ•˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์œ„์—์„œ ํŒจ์Šค์›Œ๋“œ๊ฐ€ 8์ž๋ฆฌ์ธ ๊ฒƒ์„ ์•Œ์•„๋ƒˆ์œผ๋‹ˆ 1์ž๋ฆฌ ~ 8์ž๋ฆฌ์”ฉ 1๊ฐœ์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ํ™•์ธํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค.

 

ํƒ€๊นƒ(2) ์—๋Š” ํƒ€๊นƒ(1)์—์„œ ์ง€์ •ํ•œ ๋ฌธ์ž์—ด์˜ ascii ๊ฐ’์ด ๋™์ผํ•œ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์˜์—ญ์ž…๋‹ˆ๋‹ค. ์šฐ์„  1~8 ์ž๋ฆฌ ํŒจ์Šค์›Œ๋“œ์ค‘ " ์ˆซ์ž " ๊ฐ€ ์กด์žฌํ•˜๋Š” ๋ถ€๋ถ„์„ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด 48 ~ 57๊นŒ์ง€ 1์ž๋ฆฌ์”ฉ ์ฆ๊ฐ€์‹œ์ผœ ํ™•์ธํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค.

 

* 48 ~57 ์€ ascii ์ฝ”๋“œ๋กœ " 0 ~ 9  " ๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ์˜๋ฏธ

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

 

"payload1" ์—๋Š” ํŒจ์Šค์›Œ๋“œ์˜ ์ž๋ฆฌ์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€์‹œํ‚จ ๊ฒƒ์ด๋ฉฐ "payload2" ์˜์—ญ์€ ์„ฑ๊ณต์ ์œผ๋กœ ๋„์ถœ๋œ ํŒจ์Šค์›Œ๋“œ(ascii์ฝ”๋“œ) ๋„˜๋ฒ„๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

1 ~ 8 ์ž๋ฆฌ ํŒจ์Šค์›Œ๋“œ ์ค‘ 4๋ฒˆ์งธ ์ž๋ฆฌ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋‘ ์ˆซ์ž ํ˜•ํƒœ์˜ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ๊ฒƒ์œผ๋กœ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. 
4๋ฒˆ์งธ ์ž๋ฆฌ๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฑฐ ๊ฐ™์œผ๋‹ˆ ๋ฌธ์ž(์†Œ, ๋Œ€) ๋‚˜ ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ๋Œ€์ž…ํ•ด์„œ ํ™•์ธํ•ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํƒ€๊นƒ(1)์˜ ์…‹ํŒ…์€ ๋™์ผํ•˜๊ฒŒ ๋‘ฌ๋„ ๋˜๊ณ  4๋ผ๊ณ ๋งŒ ์ง€์ •ํ•ด์ค˜์„œ ํ™•์ธํ•˜์…”๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค.

 

์šฐ์„  ํƒ€๊นƒ(2) ๋ถ€๋ถ„์— ์˜๋ฌธ(์†Œ๋ฌธ์ž) ๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ascii ์ฝ”๋“œ๋กœ " 97 ~ 122 " ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ๊ณต๊ฒฉํ•ด๋ณด๋ฉด 
์„ฑ๊ณต์ ์œผ๋กœ 4๋ฒˆ์งธ ๋ฌธ์ž์—ด์ด ์˜๋ฌธ(์†Œ๋ฌธ์ž) ๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ๊ฒƒ์œผ๋กœ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ชจ๋‘ ์•Œ์•„๋ƒˆ์œผ๋‹ˆ $_GET() ๋ฐฉ์‹์œผ๋กœ ๋„์ถœ๋œ ํŒจ์Šค์›Œ๋“œ๋งŒ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ์„ฑ๊ณตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์†Œ์Šค์—์„œ $_GET [pw] = addslashes($_GET [pw]); ํ™•์ธํ•ด๋ณด๋ฉด "addlslashes" ํ•จ์ˆ˜์— ์˜ํ•ด ์‹ฑ๊ธ€ ์ฟผํ„ฐ๊ฐ€ ์ฐจ๋‹จ๋˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์— ์žˆ์–ด์„œ๋Š” ๋ง‰ํž˜์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

addslashes ํ•จ์ˆ˜

ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ DB ๋‚ด์—์„œ ๋ฌธ์ž๋กœ ์ธ์‹๋˜๋„๋ก ํ•ด์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ์ด๊ฒƒ์ด ์„ค์ • ์•ˆ ๋˜์–ด ์žˆ์„ ์‹œ ํŠน์ˆ˜๋ฌธ์ž๋กœ ์ธํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด์„œ ์„ค์ •ํ•ด๋‘๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ BSQLI ๊ธฐ๋ฒ•์˜ ์ฐธ, ๊ฑฐ์ง“ ์„ ํ†ตํ•ด ํŒจ์Šค์›Œ๋“œ๋ฅผ ์œ ์ถ”ํ•˜๋Š” ๊ฒƒ์— ์žˆ์–ด์„œ๋Š” ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค.

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

[LOS] darkelf ํ’€์ด(6)  (0) 2020.12.05
[LOS] wolfman ํ’€์ด(5)  (0) 2020.12.05
[LOS] goblin ํ’€์ด(3)  (0) 2020.12.05
[LOS] cobolt ํ’€์ด(2)  (0) 2020.12.05
[LOS] gremlin ํ’€์ด(1)  (0) 2020.12.05
๊ณต์œ ํ•˜๊ธฐ ๋งํฌ
Comment