[SegFault] (SQLi Advanced)
SQL Injection Point3
flag๋ฅผ ์ฐพ์ผ์ธ์!
๋ฌธ์ ํ์
์์ ํ์ด์ง์ ๋ค์ด๊ฐ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ๋์จ๋ค.
์ฐ์ ํ์๊ฐ์ ์งํ ํ ๋ก๊ทธ์ธ์ ์๋ํ๋ค.
์ฌ์ฉํ ๊ณ์ : gear / 1234
๋ง์ดํ์ด์ง๋ฅผ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ ๋ ธ์ถ๋์ด ์๋ ํ๋ผ๋ฏธํฐ๊ฐ ์กด์ฌํ์ง ์์ ๊ฒ์ํ์ ํ์ธํด๋ณธ๋ค.
SQL Injection Point
๊ฒ์ํ์ ๊ธ์ ํ๋ ์์ฑํ ํ ๊ฒ์์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์ดํด๋ณด๊ธฐ๋ก ํ๋ค.
๊ฒ์์ฐฝ์ ์ ๋ ฅ์ ๋ํ ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ option_val์ sort ๋ผ๊ณ ๋์ด ์๋ ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ธํ ์ ์๋ค.
์ฐ์ sort ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ธํด๋ณด๊ธฐ ์ํด ์ดํด๋ณธ๋ค.
sort ํ๋ผ๋ฏธํฐ์ ๋ํ ์ฐธ/๊ฑฐ์ง ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๊ฒฐ๊ณผ ๋ณํ๋ ๊ฒ์ด ์์๋ค.
๋ค์์ option_val ํ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํ์ฌ ์ฐธ์ธ ๊ฐ๊ณผ ๊ฑฐ์ง์ธ ๊ฐ์ ๋ํ์ฌ ํ์ธํด๋ณธ๋ค.
option_val = 1=1 and username
์์ ๊ฐ์ด ์ฐธ์ธ ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๊ฒฝ์ฐ ๊ฒ์์ ๋ํ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
option_val = 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_8์ธ ๊ฒ์ ํ์ธํ์๋ค.
5. Table ์ด๋ฆ ํ์ธํ๊ธฐ
๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ where ๋ฌธ์ด ๋จนํ์ง ์๋ ๋ฌธ์ ๊ฐ ์์ด limit์ ํตํด ํ์ธํ์ฌ ์ถ์ถํ๊ธฐ ์ํด TABLE์ ๊ฐ์๋ฅผ ๋จผ์ ํ์ธํด ์ฃผ์๋ค.
์ด 64๊ฐ์ Table์ด ์กด์ฌํ๋ ๊ฒ์ ํ์ธํ์๊ณ
MySQL์ ๊ธฐ๋ณธ์ ์ผ๋ก ์กด์ฌํ๋ Table๋ค ๋ค์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์งํํ์๋ค.
6. Column ์ด๋ฆ ํ์ธํ๊ธฐ
์์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฐพ์ ์ฃผ์๋ค.
7. Data ์ถ๋ ฅํ๊ธฐ
์์์ ํ์ธํ ๋ฐ์ ๊ฐ์ด flag_Table์ flagData ์ปฌ๋ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด๋ณธ๋ค.
์ ์ฐจ์ ๋ฐ๋ผ ์งํํ ๊ฒฐ๊ณผ ์์ ๊ฐ์ด ์ํ๋ flag๋ฅผ ํ๋ํ ์ ์์๋ค.
์๊ฐํด๋ณผ ์
๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ order by, sort๋ฅผ ๋ด๋นํ๋ ํ๋ผ๋ฏธํฐ๊ฐ Injection Point ์๋๋ฐ, ๋ค๋ฅธ ๋ฌธ์ ๋ค๊ณผ๋ ๋ฌ๋ฆฌ ํด๋น ๊ตฌ๋ฌธ์ ์ฝ์ ํจ์ ์์ด WHERE๊ฐ ๋จนํ์ง ์๋ ๊ฒ์ ๋ณผ ์ ์์๋ค.
์ด์ ์ ์ ์ ์ธ ๊ฐ์๋ฅผ ํ์ ํ๊ณ limit์ ์ด์ฉํ์ฌ ์ฐพ์๊ฐ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์์๋ค.
์ฌ๋ฌ์ค์ด ๋์ค์ง ์๋ ๊ฒฝ์ฐ๋ ์์ ๊ฐ์ด ํน์ ๊ตฌ๋ฌธ์ด ๋์ค์ง ์๋๋ค๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ์๋ ์ง์ฅ์ด ์๋ค๋ ์ฌ์ค์ ๊นจ๋ฌ์ ์ ์์๋ค.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์