Archive for Dev. (junyup2)

์ง€์‹์„ ์ฑ„์›Œ๊ฐ€๋Š” ใ€Ž๊ฐœ๋ฐœ์ž/ํ™”์ดํŠธํ•ด์ปคใ€๋ฅผ ๋ชฉํ‘œ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ธ”๋กœ๊ทธ

Wargame & CTF/SegFault

[SegFault] (SQLi Advanced) - SQL Injection Point2

Gearvirus(junyup2) 2023. 12. 14. 19:48

[SegFault] (SQLi Advanced)

SQL Injection Point2

falg๋ฅผ ์ฐพ์œผ์„ธ์š”!

๋ฌธ์ œ ํŒŒ์•…

์œ„์˜ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋‚˜์˜จ๋‹ค.

์šฐ์„  ํšŒ์›๊ฐ€์ž… ์ง„ํ–‰ ํ›„ ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•œ๋‹ค.

์‚ฌ์šฉํ•œ ๊ณ„์ • : gear / 1234

 

๋งˆ์ดํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ ๋…ธ์ถœ๋˜์–ด ์žˆ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„ ๊ฒŒ์‹œํŒ์„ ํ™•์ธํ•ด๋ณธ๋‹ค.

 

SQL Injection Point

๊ฒŒ์‹œํŒ์— ๊ธ€์„ ํ•˜๋‚˜ ์ž‘์„ฑํ•œ ํ›„ ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.

๊ฒ€์ƒ‰์ฐฝ์˜ ์ž…๋ ฅ์— ๋Œ€ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ option_val์ด๋ผ๋Š” sort๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฐธ์ธ ๊ฐ’๊ณผ ๊ฑฐ์ง“์ธ ๊ฐ’์— ๋Œ€ํ•˜์—ฌ ํ™•์ธํ•ด๋ณธ๋‹ค.

1=1 and username

์œ„์™€ ๊ฐ™์ด ์ฐธ์ธ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒฝ์šฐ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

1=2 and username

์œ„์™€ ๊ฐ™์ด ๊ฑฐ์ง“์ธ ๊ฐ’์˜ ๊ฒฝ์šฐ ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค.

์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ SQL Injection์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋œ๋‹ค.

์œ„์˜ ๊ฒฐ๊ณผ์— ๋Œ€ํ•˜์—ฌ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์˜ ์˜ˆ์ƒ๋˜๋Š” ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

select {์ปฌ๋Ÿผ} where {option_val} = {board_result} ํ˜•์‹

ํ’€์ด ๊ณผ์ • (ํ•ด๊ฒฐ ๋ฐฉ์•ˆ)

1. SQL Injection ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํŒ๋‹จ

๊ฒŒ์‹œํŒ์˜ ๊ฒ€์ƒ‰๊ธฐ๋Šฅ์„ ์ด์šฉํ•œ Union SQL Injection์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค.

 

2. Column์˜ ๊ฐœ์ˆ˜ ํŒŒ์•…ํ•˜๊ธฐ

order by๋ฅผ ์ด์šฉํ•˜์—ฌ ์กด์žฌํ•˜๋Š” COLUMN์˜ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•œ๋‹ค.

option_val=username order by 1 ~ 10#

1~10๊นŒ์ง€๋Š” ๊ฒ€์ƒ‰์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€๋งŒ 11๋ถ€ํ„ฐ๋Š” ๊ฒ€์ƒ‰์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค. ์ด๋Š” ์ •๋ ฌ ๊ฐ€๋Šฅํ•œ ์ปฌ๋Ÿผ์˜ ๊ฐœ์ˆ˜๊ฐ€ 10๊ฐœ๋ผ๋Š” ์˜๋ฏธ๋กœ์„œ COLUMN์˜ ๊ฐœ์ˆ˜๊ฐ€ 10๊ฐœ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

3. ์ถœ๋ ฅ๋˜๋Š” Column์˜ ์œ„์น˜ ํŒŒ์•…ํ•˜๊ธฐ

1~10์˜ COLUMN์ค‘ ์ถœ๋ ฅ๋˜๋Š” ์ปฌ๋Ÿผ์˜ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•ด์•ผ ํ•œ๋‹ค.

option_val = username union select 1,2,3,4,5,6,7,8,9,10#

๊ทธ ๊ฒฐ๊ณผ ์œ„์™€ ๊ฐ™์ด 1~10์˜ COLUMN์ค‘ 1~4์˜ ์ปฌ๋Ÿผ์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

UserID | Title | Views | Date 
    1      |    2   |     3    |    4 

 

๊ณต๊ฒฉ Format ์„ค์ •ํ•˜๊ธฐ

๋ณธ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ  1~10์˜ ์ปฌ๋Ÿผ ์ค‘ 1~4์˜ ์ปฌ๋Ÿผ์ด ์ถœ๋ ฅ๋˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ๊ทธ ์ค‘ ์•„๋ฌด ์œ„์น˜์—๋‚˜ ์›ํ•˜๋Š” SQL ๊ตฌ๋ฌธ์„ ์‚ฝ์ž…ํ•˜๋ฉด ๋œ๋‹ค.

option_val=username select _____,2,3,4,5,6,7,8,9,10#

 

4. DB ์ด๋ฆ„ ํ™•์ธํ•˜๊ธฐ

์–ด๋–ค TABLE๊ณผ COLUMN์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ์–ด๋–ค DB๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ๋ถ€ํ„ฐ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

DB์˜ ์ด๋ฆ„์ด sqli_7์ธ ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค.

 

5. Table ์ด๋ฆ„ ํ™•์ธํ•˜๊ธฐ

 

6. Column ์ด๋ฆ„ ํ™•์ธํ•˜๊ธฐ

 

7. Data ์ถœ๋ ฅํ•˜๊ธฐ

์ ˆ์ฐจ์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์ด ์›ํ•˜๋Š” flag๋ฅผ ํš๋“ํ•  ์ˆ˜ ์žˆ๋‹ค.


์ƒ๊ฐํ•ด๋ณผ ์ 

SQL Injection  Point ํ™•์ธ์„ ์œ„ํ•œ sort ๊ธฐ๋Šฅ์—์„œ์˜ ์ฐธ/๊ฑฐ์ง“ ํŒ๋‹จ ๋ฐฉ๋ฒ•

์ฐธ : case when (1=1) then username else title end
๊ฑฐ์ง“ : case when (1=2) then username else title end

์ฐธ / ๊ฑฐ์ง“์— ๋Œ€ํ•˜์—ฌ ์ •๋ ฌ ๋ฐฉ์‹์„ ๋ฐ”๊พธ๋„๋ก ํ•˜์—ฌ ์ •๋ ฌ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‚˜์˜ค๋Š” ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ฅผ ํ™•์ธํ•œ๋‹ค๋ฉด ์ด๋Š” SQL Injection์˜ ํฌ์ธํŠธ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

์งˆ๋ฌธ ํ™˜์˜, ์ˆ˜์ • ๋ฐ ๋ณด์™„์— ๋Œ€ํ•œ ์ง€์  ํ™˜์˜