1. 식별, 인증 동시
- 식별 인증 동시란 SQL문에서 식별과 인증을 동시에 하는것을 말한다
- select * from login where id=$user_id and pw=$user_pw;
- 위 문구처럼 id와 pw를 동시에 처리하여 로그인 하는 방식이다
1) 공격 방법
- ID: john' or '1'='1# pw: 아무거나
- 위 문구를 입력하게 되면 SQL문에서 다음과같이 처리된다
- select * from login where id=john' or '1'='1# and pw~~~
- #뒤부터는 주석처리가 되어 문구가 실행되지 않는다
- 따라서 #앞에 'john' or '1'='1' 부분만 참이되면 되는데 1=1 부분이 참이므로 or연산에 따라 로그인 우회가 가능해진다
2. 식별, 인증 분리
- 식별 인증 분리란 SQL문에서 식별과 인증을 따로 처리하는 방식을 말한다
- 식별,인증 분리에서는 sql구문이 아닌 if($res[‘pw’]== $user_pw)문이 참이 되어야 로그인이 가능하다.
- select pw from login where id=$user_id;
if($res['pw']==$user_pw){
- 위 문구처럼 id를 입력받아 pw를 DB에서 가져오고 입력한pw와 DB의 pw가 일치하면 로그인이 되는 방식이다
1) 공격 방법
- ID: x' union select '1234 pw: 1234
- SELECT * FROM login WHERE id=’x’ union select ‘1234’
- 위 문구를 입력하면 SQL문에서 (~~WHERE id=‘x’)로 실제문구가 닫히게 된다.
- 그 뒤에 union select문이 실행되면서 DB에서 가져온 pw값과 password로 입력한 1234가 일치하는 계정이 있으면 if문이 참이 되어 그 계정으로 로그인을 우회 할 수 있게 된다.
3. 식별, 인증 동시(해시)
- 식별 인증 동시(해시)란 위에서 봤던 식별 인증 동시와 다를게 없다
- 하지만 비밀번호가 해시 처리되어 비밀번호 유출시에도 그대로 유출 되지 않고 해시값이 유출된다는 점이 다르다
- select * from login where id=$user_id and pw=md5($user_pw);
1) 공격 방법
- 공격방법은 식별 인증 동시와 동일하게 하면 로그인 우회가 가능하다
4. 식별, 인증 분리(해시)
- 식별 인증 분리(해시)란 역시 식별 인증 분리 방식과 같은 구조이다
- 비밀번호만 해시처리 되어있다는 점이 다르다
1) 공격 방법
- 공격방법도 유사하지만 비밀번호가 해시처리되어있기 때문에 다음과 같이 입력해야 한다
- ID: x' union select md5('1234')' pw:1234
- 위와 같이 입력해야 해시 처리된 비밀번호가 서로 대조가 가능해져 로그인 우회 할 수가 있다
5. 식별, 인증 개행
- select * from login where id=$user_id and
pw=$user_pw
- 식별, 인증 개행이란 말 그대로 Enter를 눌러 개행하는 방식이다
- 이런 경우 주석처리가 통하지 않기 때문에 ‘을 이용하여 구문을 맞춰줘야 한다
1) 공격 방법
- ID: john' or '1'='1 pw: 아무거나
- 공격 시 위와 같은 구문이 성공하는 이유는 and연산보다 or연산이 더 먼저 실행되기 때문에 and전에 or ‘1’=’1’부분이 참이 되므로 로그인 우회가 가능해진다
'Web Hacking' 카테고리의 다른 글
CSRF (0) | 2022.12.27 |
---|---|
XSS (0) | 2022.12.16 |
Blind SQLi (0) | 2022.12.05 |
Error Based SQLi (0) | 2022.12.05 |
UNION Based SQLi (0) | 2022.11.21 |