Archive for Dev. (junyup2)

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

Wargame & CTF/SegFault

[SegFault] (SQLi Advanced) - SQL Injection Point1

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

[SegFault] (SQLi Advanced)

SQL Injection Point1

SQL Linjection ์œผ๋กœ flag๋ฅผ ์ฐพ์•„๋‚ด์ž!

๋ฌธ์ œ ํŒŒ์•…

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

์šฐ์„  ๋กœ๊ทธ์ธ์„ ํ•ด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.

์šฐ์„  ์ด์šฉ์„ ์œ„ํ•ด ํšŒ์› ๊ฐ€์ž…์„ ํ•ด๋ณธ๋‹ค.

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

์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธํ•˜์—ฌ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.

์šฐ์„  ๋งˆ์ดํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•ด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.

 

SQL Injection Point 1

๋งˆ์ดํŽ˜์ด์ง€์—์„œ SQL Injection์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Burp์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ™•์ธํ•ด๋ณธ๋‹ค.

๋งˆ์ดํŽ˜์ด์ง€์˜ ์š”์ฒญ์—์„œ ์ฟ ํ‚ค(Cookie)๋ฅผ ์‚ดํŽด๋ณธ ๊ฒฐ๊ณผ userํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋ณ€์กฐ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ ๋ณ€์กฐํ•œ ๊ทธ๋Œ€๋กœ์˜ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ฐธ์ธ ๊ฐ’๊ณผ ๊ฑฐ์ง“์ธ ๊ฐ’์„ ๋Œ€์ž…ํ•˜์—ฌ ์ฐจ์ด๋ฅผ ํ™•์ธํ•ด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.

์ฐธ : 'and'1'='1
๊ฑฐ์ง“ : 'and'1'='2

 

์ฐธ์ธ ๊ฐ’์„ ๋„ฃ์–ด์ค€ ๊ฒฐ๊ณผ info ๋ถ€๋ถ„์— Nothing Here... ๊ฐ€ ์ถœ๋ ฅ๋˜์ง€๋งŒ, ๊ฑฐ์ง“์ธ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒฝ์šฐ ์•„๋ฌด๊ฒƒ๋„ ๋‚˜์˜ค์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์šฐ์„  ๋งˆ์ดํŽ˜์ด์ง€์—์„œ๋Š” Blind SQL Injection์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด ํ™•์ธ ๋˜์—ˆ๋‹ค.

์ผ๋‹จ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋‹ค๋ฅธ ๋ฐฉ์‹์˜ SQLi ์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.

๋‹ค์Œ์œผ๋กœ ๊ฒŒ์‹œํŒ์„ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.

 

SQL Injection Point 2

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

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

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

1=1 and username

์œ„์™€ ๊ฐ™์ด ์ฐธ์ธ ๊ฐ’์„ ๋„ฃ์–ด ์ฃผ์—ˆ์„๋•Œ๋Š” ๊ธ€์ด ๊ฒ€์ƒ‰๋œ๋‹ค.

1=2 and username

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

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


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

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

๋งˆ์ดํŽ˜์ด์ง€์—์„œ Blind SQL Injection์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๊ณ , ๊ฒŒ์‹œํŒ์—์„œ๋Š” Union SQL Injection์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค.

ํ•ด๋‹น ๋ฌธ์ œ์—์„œ๋Š” ์šฐ์„  Union SQLi๋ฅผ ์ด์šฉํ•˜๊ธฐ๋กœ ํ•œ๋‹ค.

 

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_6์ธ ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค.

 

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

 

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

 

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

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


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

๋ณธ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ SQL Injection์ด ๊ฐ€๋Šฅํ•œ Point๊ฐ€ 2๊ฐœ ์กด์žฌํ•˜์˜€๋‹ค.
ํ•œ๊ฐ€์ง€ ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค๊ณ  ๊ทธ๊ณณ์—๋งŒ ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ „์ฒด์ ์œผ๋กœ ์ทจ์•ฝ์ ์„ ํ™•์ธํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์—ฌ์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ๋œ๋‹ค.

๋˜ํ•œ python์„ ํ™œ์šฉํ•œ SQLi์˜ ์ž๋™ํ™”์— ๋Œ€ํ•˜์—ฌ๋„ ์กฐ๊ธˆ ๋” ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.
์‹œ๊ฐ„์„ ํ™•์‹คํ•˜๊ฒŒ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ƒ๊ฐํ•˜์ž.

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