2017. 5. 23. 14:32ㆍSystemHacking/FTZ
아주아주 간단한 문제입니다
< 그림 7.1 >
비밀번호를 입력했더니 나온 이상한 문자가 보이시나요 ?
" --_--_- --____- ---_-__ --__-_- " 힌트에서 2진수를 10진수로 바꿀 수 있는지 물어보았습니다
이 이상한 문자들은 2진수일까요 ? " 1101101 1100001 1110100 1100101 " 로 볼 수 있습니다 !
친절하게 띄어쓰기가 되어있어서 구분하기가 쉽습니다
아스키 테이블을 보고 해당 2진수를 바꿔보도록 합시다
< 그림 7.2 >
< 그림 7.3 >
mate ... 정답입니다 level8의 패스워드가 나왔습니다
문제는 쉽게 풀었고 해당 파일을 gdb로 분석해봅시다 !!
< 그림 7.4 >
[1] <main+21>: call 0x8048344 <malloc>
malloc(0x64) 100byte의 메모리공간을 할당해주는 함수
[2] <main+40>: call 0x8048384 <printf>
printf( "Insert The Passord : " );
[3] <main+51> ~ <main+62>: call <fgets>
fgets( 입력받은 값을 저장할 공간 , 얼마나 입력할 지 크기 , STDIN );
fgets( input , $0x64 , STDIN ); input변수에 100byte크기 만큼 문자열을 입력하는 함수
[4] <main+73> ~ <main+83>: call <strncmp>
scrncmp( str1 , str2 , n ) => 문자열 str1과 str2를 길이 n 만큼 서로 비교한다
strncmp( input , "mate" , 0x4 ) => 사용자가 입력한 값과 "mate"를 비교한다
[5] <main+91>,<main+93> strncmp의 결과에 따라 jump한다
mate와 일치한다면 코드가 그대로 진행되며 printf함수가 호출된다
printf( "\nCongratulation! next password is \n"break the world\".\n\n" );
그리고 exit(0) 함수가 호출되어 함수는 종료 된다 ㅡ 그림 7.5
jne : 사용자가 입력한 값 input이 mate와 일치하지 않으면 main+121로 점프한다 ㅡ 그림 7.5
< 그림 7.5 >
system("cat /bin/wrong.txt"); cat 명령어가 실행된다
gdb분석은 완료했고 소스코드를 복원해보면 다음과 같습니다
< 복원된 소스코드( tn ) >
#include<stdio.h>
#include<malloc.h>
int main(){
char *input = null;
char *str = "mate";
input = (char *)malloc(0x64); // 동적으로 input변수에 100byte공간을 할당한다
printf("Insert The Password : ");
fgets( input , 0x64 , stdin ); // 사용자로부터 문자열을 입력받는다
if ( strncmp( input, str, 0x4 ) == 0 ){ // 입력받은 문자열이 "mate"와 일치하는지 확인
printf("\nCongratulation! next password is \"reak the world\".\n\n");
exit(0);
}else {
system("cat /bin/wrong.txt");
}
free(input); // malloc으로 공간할당시 항상 닫아주어야한다 ( 오류방지 )
return 0;
}
* 참고 strncmp( str1, str2, n )의 리턴값
1. str1 < str2 음수 반환
2. str1 > str2 양수 반환
3. str1 == str2 0을 리턴한다
level7 문제풀이와 메모리분석이 끝났습니다 이상한점이나 부족한부분 댓글로 알려주세요 ^^
'SystemHacking > FTZ' 카테고리의 다른 글
FTZ level9 Buffer OverFlow (0) | 2017.05.23 |
---|---|
FTZ level8 리눅스 패스워드 파일 크랙 (0) | 2017.05.23 |
FTZ level6 시스템 인터럽트 ( System Interupt ) (0) | 2017.05.23 |
FTZ level5 레이스 컨디션 ( Race Condition ) (0) | 2017.05.23 |
FTZ level4 xinetd백도어 (0) | 2017.05.23 |