본문 바로가기
Hacking/SQL Injection

3.SQL Injection - 로그인 우회하기

by 혁이 2017. 4. 24.
반응형



안녕하세요


베비온입니다.


포스팅을 위해 여러번 SQL Injection을 실습 해봤는데 잘 안되서 머리가 터질거같네요 


가장 먼저 login 페이지를 우회하여 들어가보도록 하겠습니다.







정상적인 로그인입니다.


정상적으로 한 로그인이 완료된 것을 볼 수 있습니다.




이번엔 root를 우회해서 들어가보겠습니다.


1.주석처리



ID 에 root' -- ' 를 적었습니다.


패스워드를 입력 안해도 제대로 작동된 모습입니다.




--는 mysql에서 한줄 주석 구문입니다. 즉 --뒤에 나오는 것들은 다 주석처리되어


실질적으로 처리가 안되게 하는 공격입니다.



root' -- '를 입력함으로써 로그인하는 sql 쿼리문은


$sql=select logid,email from member where logid='root' -- '' && logpw='';


*위에 나온 ' 들은 모두 작은따옴표 입니다.


주의 하셔야 하는건 -- 뒤에 띄어쓰기를 한개 넣어주셔야 합니다.


의미는 id가 root이면 통과.(패스워드는 주석처리가 되었기 때문에 비교를 하지 않음)





2. blind SQL Injection사용






이번엔 ID는 root 정상적으로,


PW는 ' or '1'='1


을 삽입하여 로그인 시켰습니다.


쿼리를 살펴보면


select logid,email from member where logid='root' && logpw='' or '1'='1' 가 됩니다.


붉은 부분이 입력 부분입니다.


''와 1=1 둘 중 한개만 참이어도 login이 되는 것을 확인 하실 수 있습니다.





부계정인 asdf로도 해보겠습니다.


1.주석사용



로그인이 asdf로 된 것을 보실 수 있습니다.


이번엔 ID에 asdf' -- 


를 입력했습니다. 마지막에 띄어쓰기 한개가 들어가있습니다.


pw는 아무거나 입력해주시면 됩니다


쿼리는


select logid,email from member where logid='asdf' -- logpw=''


입니다.


-- 뒤에를 전부 주석처리합니다.




2. Blind SQL Injection




ID는 asdf

PW=' or '1'='1

을 넣었습니다.


근데 이상한 점이 한개 있지요??




root로 로그인 된 것을 보실 수 있습니다.


?!?!


이유를 설명해 드리겠습니다.


쿼리를 먼저 보시면


select logid, email from member where logid='asdf' && logpw='' or '1'='1'


이 됩니다.


조건이 총 세개가 있습니다.


연산자는 총 두개로 and와 or가 있습니다


뒤에서 or '1'='1'로 참을 만들어 주어서 저 전제 자체가 모두 참이 되어버렸습니다.



따라서 첫번째로 나온 root로 로그인이 되어버렸습니다.


이걸 이용해볼까요??







ID는 asdf

PW는 ' or 1=1 and idx='2

를 써서 idx가 두번째인 second에 들어왔습니다.사용하기 위해선 필드명을 알아야합니다.


쿼리는


select logid, email from member where logid='asdf' && logpw='' or 1=1 and idx='2'


가 됐습니다.


차례대로 비교하는 sql이 세번째 1=1까지했을땐 참이 나왔고 그중 idx=2인 것만(and) 를 했습니다.


sql로 한 번 볼까요?





이번엔 반대로 1=1을 제일 마지막에 넣는다면..?



마지막 or 1=1로 인해서 결과가 참이 나오고 그로 인해 전체값이 나왔습니다.





이렇게 해서 로그인 페이지를 우회했습니다.


실습하면서 많은 것을 배웠네요 ㅎㅎ 포스팅을 보시는 분들에게 도움이 됐으면 좋겠네요

반응형

'Hacking > SQL Injection' 카테고리의 다른 글

4. 게시판의 컬럼 갯수 알아내기  (0) 2017.04.27
2.SQL Injection의 종류  (0) 2017.04.24
1. SQL Injection이란?  (0) 2017.04.24