식별과 인증 동시/분리 처리 + Hash 실습 파트
식별과 인증 동시/분리 처리 + Hash
이번에는 앞서 했던 식별과 인증 동시 / 분리 처리에 Hash 처리를 한 로직에서 살펴보겠다. select * from member where id = 'user' and pw = md5('user_pass') 식별과 인증을 동시에 하는 case에 md5 Hash처리만 한 것
ragdo11.tistory.com
위는 이론 파트!
한 가지 얘기를 하자면 비밀번호는 원래 평문 형태로 저장하는 것이 아니라 일방향 해시함수로 해시 처리를 한 후에 저장하는 것이 맞다. 비밀번호는 암호화할 필요성은 분명하지만, 복호화할 필요성은 없기 때문이다.
guest와 admin 계정은 평문으로 저장된 형태, user 계정은 해시 처리를 한 후 저장한 형태이다. 원래는 user 계정 형태가 맞는 저장 형태!!
아무튼 이번엔 해시 처리가 된 user 계정으로 우회해보는 실습을 해 볼 것이다. (식별 인증 분리 형태)
아이디와 패스워드가 user인 계정으로 평범하게 접속을 시도해보고,
로그인이 잘 되는 것을 확인했다면! 식별/인증 분리 형태때 했던 방식으로 우회를 시도해본다.
분명 똑같은(?) 식별/인증 분리 형태일텐데 이번엔 실패한다. 비밀번호에 해시 작업을 하고 있다면 해시된 123 문자열과 일반 123 문자열을 비교하게 되기 때문에 실패하게 되는 것이다.
로그인 우회에 성공하기 위해서는 해시된 123 문자열끼리 비교하도록 만들어주면 된다!
해시 처리된 비밀번호도 이와 같은 형태로 우회가 가능하다. 물론 이 세상에 md5 해시 함수만 있는 것이 아닌 만큼 다른 해시 함수를 여러 차례 시도해 봐야 할 것이다. 다만 자주 쓰이는 해시 함수는 어느 정도 정해져 있는 만큼(대표적으로 SHA-2) 그 함수 위주로 시도해보면 좋을 것 같다!