목록War Game (174)
tmxklab
1. 문제확인 1) 사용자 및 패스워드 : level14 / what that nigga want? 2) 파일확인 3) hint 코드 설명 #include #include main() { int crap; int check; char buf[20]; fgets(buf, 45, stdin); if(check==0xdeadbeef) { setreuid(3095, 3095); // level15의 ruid, uid값으로 변경 system("/bin/sh"); // } } 프로그램 실행 후 fgets함수를 통해 사용자의 입력을 받을 수 있음(stdin) buf변수의 20bytes보다 더 큰 입력 값을 넣을 수 있음 → bof 취약점 존재 2. 접근방법 1) attackme 디버깅 함수의 프롤로그(push ebp..
1. 문제확인 1) 사용자 및 패스워드 : level13 / have no clue 2) 파일확인 3) hint 코드 설명 #include main( int argc, char *argv[] ) { long i=0x1234567; char buf[1024]; setreuid(3094, 3094); // "./attackme [인자값]"인 경우 argc는 2, argv[0]은 "./attackme", argv[1]은 "인자값" // 즉, 인자 값을 buf에 복사 if(argc > 1) strcpy(buf, argv[1]); // 이미 0x1234567로 초기화된 i값이 아니라면 if문 실행 // kill함수의 첫 번째 인자는 프로세스 id, 두 번째 인자는 프로세스id if(i!=0x1234567){ pr..
1. 문제확인 1) 사용자 및 패스워드 : level12 / it is like this 2) 파일확인 3) hint 코드 설명 #include #include #include int main( void ) { // char형 str변수 256바이트 할당 char str[256]; // 실제 사용자 ID와 유효 사용자 ID 3093로 설정 setreuid(3093, 3093); printf("문장을 입력하세요.\n"); // 사용자 입력을 통해 str변수에 저장 gets(str); printf("%s\n", str); } 프로그램 실행시에 gets()를 통해 사용자의 입력을 받을 수 있음 str배열의 크기(256bytes)보다 더 큰 입력 값을 넣을 수 있음 -> bof취약점 존재 2. 접근방법 1) a..
1. 문제 확인 1) 사용자 및 패스워드 : level11 / what!@#$? 2) 파일 확인 3) hint 코드 설명 #include #include // argc, argv를 통해 인자 값을 받아 실행 int main( int argc, char *argv[]) { // char형 str변수 256바이트 할당 char str[256]; // 실제 사용자 ID와 유효 사용자 ID 3092로 설정 setreuid(3092, 3092); // argv[1]인자 값을 str변수에 복사 strcpy(str, argv[1]); printf(str); } - 프로그램 실행 시 인자 값을 받아 str배열에 복사한 뒤 출력해주는 코드 - strcpy()에서 str배열의 크기(256bytes)보다 더 많은 값을 ar..