본문 바로가기
프로그래밍/SYSTEM HACKING

[SYSTEM HACKING] GDB를 이용한 바이너리 분석 실습

by B T Y 2017. 11. 13.
반응형

GDB를 이용한 바이너리 분석 실습에 대해서 정리한다.

 

 

- 바이너리 분석 실습( 패스워드 찾기 )

 

1). 예제 프로그램

 

  #> wget http://192.168.4.200/password1

 

2). 패스워드 찾기

 

  - 기계어를 -> C 코드로 변환

 

 

[ 어셈블리 코드 ]

 

 

 

 

 

  - 분석을 할때는 언제 얼만큼의 메모리를 할당해서 사용하는지를 정확하게 파악해야 한다.

  - 어셈블리 상태에서는 해당 분기문이 if 같은 그냥 조건문인지 아니면 while이나 for 같은 반복문인지를 한줄만 보고는

     판단할 수 없기 때문에 섣부르게 판단하지 않도록 한다!!

 

 

 

 

[ c언어 코드 ]

 

#include <stdio.h>

 

char password[] = "th3p4ssw0rd";

 

int main()

{

  // 1036 byte

  char buffer[1024];                 // ebp - 1024

  // 12 byte

  char *p;                         // ebp - 1028

  char *q;                         // ebp - 1032

  int len;                          // ebp - 1036

 

  printf("Input password: ");

  //  char *fgets(char *s, int size, FILE *stream );

  fgets( buffer, 1024, stdin );

 

  len = strlen( buffer );

 

  if( len > 0 && buffer[len-1] == '\n' ) {

    buffer[len-1] = 0;

  }

 

  p = buffer;

  q = password;

 

  while( *p != 0 && *q != 0 && *p == *q ) {

    p++;

    q++;

  }

 

  if( *p == 0 && *q == 0 ) {

    printf("Conguratulations! You got it!\n");

  } else {

    printf("Oops! wrong password! :-P\n");

  }

 

  return 0;

}

 

 

 

반응형

댓글