Archive for Dev. (junyup2)

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

Wargame & CTF/SegFault

[SegFault] (SQLi Advanced) - SQL Injection Point4

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

[SegFault] (SQLi Advanced)

SQL Injection Point4

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

๋ฌธ์ œ ํŒŒ์•…

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

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

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

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

 

SQL Injection Point

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

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

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

1=1 and username

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

1=2 and username

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

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


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

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 ์ด๋ฆ„ ํ™•์ธํ•˜๊ธฐ

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

 

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

flagHere Table์— ๋Œ€ํ•˜์—ฌ ํ™•์ธํ•ด๋ณด์ž.

 

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

๋ณธ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ WHERE ์„ ๋„ฃ๋Š” ๊ฒฝ์šฐ ๋™์ž‘ํ•˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ „์ฒด๋ฅผ ์Šค์บ”ํ•˜๋ฉฐ ํ™•์ธํ•ด๋ด์•ผ ํ•œ๋‹ค.

๋๋ถ€๋ถ„ ๋ถ€ํ„ฐ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ ์ƒ๊ฐํ•œ ์œ„์น˜์— ์ƒ๊ฐํ•œ Column์ด ์กด์žฌํ•˜์ง€ ์•Š์•˜๋‹ค.

์•ž๋ถ€๋ถ„ ๋ถ€ํ„ฐ limit์„ ํ†ตํ•ด ์ฐจ๋ก€๋Œ€๋กœ ์Šค์บ”ํ•ด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.

์ค‘๊ฐ„ ์œ„์น˜์— FLAG๋ผ๋Š” ์ด๋ฆ„์˜ COLUMN์ด ํ™•์ธ๋˜์—ˆ๋‹ค.

(์˜ˆ์ƒํ•œ ๊ฒฐ๊ณผ๋Š” ๊ฐ€์žฅ ๋’ท์ชฝ์— flag ์™€ ๊ฐ™์ด ์†Œ๋ฌธ์ž๋กœ ๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. - ๊ธฐ์กด์˜ ๋ฌธ์ œ๋“ค์ด ๊ทธ๋žฌ๊ธฐ ๋•Œ๋ฌธ...)

 

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

์œ„์—์„œ ํ™•์ธ๋œ FLAG COLUMN์— ๋Œ€ํ•˜์—ฌ ํ™•์ธํ•ด๋ณธ๋‹ค.

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


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

๋ณธ ๋ฌธ์ œ์˜ Column๋ช…๊ณผ ๊ฐ™์ด COLUMN์˜ ์œ„์น˜์™€ ์ด๋ฆ„์ด ์ƒ๊ฐํ•œ ๊ฒƒ๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ • TABLE / COLUMN์— ๋Œ€ํ•˜์—ฌ ์ด๋Ÿฐ ์œ„์น˜์— ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฐ ์ด๋ฆ„์ผ ๊ฒƒ์ด๋‹ค. ๋ผ๋Š” ์ถ”์ธก์€ ์–ด๋Š์ •๋„ ํ•˜๋”๋ผ๋„, ๋‚ด ์ถ”์ธก์ด ๋งž์ง€ ์•Š์„ ๊ฒฝ์šฐ๋„ ์ƒ๊ฐํ•˜์—ฌ ์ „์ฒด์ ์œผ๋กœ ์Šค์บ”ํ•ด๋ด์•ผ ํ•œ๋‹ค๋Š” ์ƒ๊ฐ๋„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
(๋‹นํ™ฉํ•˜์ง€ ์•Š๋„๋ก ํ•˜์ž.)

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