MySQL에서 기본적으로 지원해주는 password 함수.
영문과 숫자로 이루어진 비밀번호를 암호화처리해서 DB 에 저장해줍니다.
예를 들어 DB를 해킹하여 아이디와 비밀번호를 알아내더라도 password 함수에 의해 암호화처리가 되기때문에 2차 피해를
줄일 수 있습니다.
하지만 ..!
약간의 트릭만 이용하면 password 함수를 이용하여 암호화된 내용을 복호화 할 수 있습니다. 후후후
역시 많이들 사용하는 MD5나 다른 암호화알고리즘을 사용했더라도 복호화는 가능 하기는 합니다.
방법은 하나하나 대조해보는 것.
말은 쉽지만 하나하나 대조해본다는게 쉬운 건 아니요;;
방법을 알려드리게 되면,
첫번째 방법과 두번째 방법이 있습니다.
첫번째 방법은 인터넷상에서 많이 돌아다니고 있는 내용이고, 흔한 방법중 하나입니다.
DB안에서 아래와 같이 테이블을 만들어 줍니다.
insert into crack values ('9');
그리고 아래와 같이 쿼리를 날려주면 됩니다.
(아래의 쿼리는 비밀번호가 4자리일 경우일때만 가능합니다. 그 이후로는 t4 이후 t5를 추가해주면 됩니다)
password(concat(t1.c, t2.c, t3.c, t4.c)) = "446a12100c856ce9";
(446a12100c856ce9는 암호화된 비밀번호)
위에 것이 첫번째 방법입니다.
음............
저 방법으로 비밀번호를 복호화하기란, 직접 해봤지만 정말 힘듭니다 'ㅡ';;;;
실전에서 사용할만한 방법으로 두번째 방법을 소개합니다.
위에 있는 c언어 파일을 받아주세요.
그리고 컴파일해서 실행파일로 만들어줘야 하는데, 복호화를 시도하는 상황이라면 음, 뭐 거의 리눅스상태라고 생각하겠습니다.
(윈도우면 Visual Studio나 컴파일러를 이용해서 컴파일해주면됩니다.)
자, 리눅스의 경우!
gcc -O2 -fomit-frame-pointer mysqlfast.c -o mysqlfast
./mysqlfast 446a12100c856ce9
(446a12100c856ce9는 암호화된 비밀번호)
요렇게하면 뾰로롱하면서 복화된 비밀번호가 출력됩니다.
구글링해본결과 복호화되는 속도는
6자리까지는 복호화실행과 동시에 결과값이 나오고, 7자리는 한 몇분정도? 8자리는 1시간정도 걸린다고 합니다.
그럼 9자리 이상으로는 엄청 걸리겠죠^^;;??
일반적으로 비밀번호 8자리 이내로 설정하는 경우가 많으니깐 간단한 비밀번호의 경우는 쉽게 뚫을 수 있을 것 같네요^^
오랜만에 복호화할 일이 생겨서 잠깐 사용한 것을 블로그 쓰려니깐 내용이 엉성엉성 하네요.
궁금한 내용들 댓글로 달아주시면 바로바로 확인하는대로 답변 드리도록 하겠습니다 ^^
JavaScript로 세상을 지배하는 법 (16) | 2017.04.07 |
---|---|
[npm] npm v2에서 npm v3로 업데이트하기 (0) | 2016.08.24 |
C# ASP.NET에서 QueryString 한글깨질때 (0) | 2012.05.23 |
telnet으로 실행한 프로세스 telnet 접속 끊어져도 계속 유지하기 [출처] telnet으로 실행한 프로세스 telnet 접속 끊어져도 계속 유지하기|작성자 동네바보 (0) | 2012.04.02 |
맥에서 서버 SSH로 접속하기 (0) | 2011.11.07 |
댓글 영역