[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์ ์๋ํ์ ๋ํ์ฌ๋ ์กฐ๊ธ ๋ ๊ณต๋ถํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ ๋ค.
์๊ฐ์ ํ์คํ๊ฒ ์ค์ฌ์ค ์ ์๋ค๋ ์ ์ ์๊ฐํ์.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์