Pwnable/FTZ
-
FTZ. level 11 정리Pwnable/FTZ 2020. 2. 25. 05:17
level11 비밀번호 : what!@#$? 먼저 힌트를 본다. 뭔가 strcpy에서 오버플로우가 일어날꺼같지 않은가!? (내 생각은 str의 크기가 주어졌는데 그 이상 입력할 수 있으면 오버플로우가 일어날꺼같아서) 그럼 attackme를 gdb로 확인해보자. [level11@ftz level11]$ gdb attackme (gdb) set disassembly-flavor intel (gdb) disas main main+27 부터 main+48 까지 strcpy 부분이므로 해석을 자세히 해보면 //이전까지 esp = ebp - 280 0x0804848b :add esp,0x10 //: esp = [ebp - 264] 0x0804848e :sub esp,0x8 //: esp = [ebp - 272] 0..
-
FTZ. 함수 프롤로그 / 함수 에필로그Pwnable/FTZ 2020. 2. 11. 05:37
함수 프롤로그 : 함수 내에서 사용할 스택 프레임을 설정한다. esp // 스택의 마지막 부분을 저장하면 push, pop 에 따라 4씩 값이 변한다. eip // 다음에 실행하여야 할 명령어가 존재하는 메모리 주소가 저장됨. ebp // 스택의 시작지점 주소가 저장된다. (스택의 처음 부분) push // 스택 값을 넣는다. esp의 값이 4만큼 줄어들고 이 위치에 새로운 값이 채워진다. push ebp // 돌아갈 곳의 주소를 스택에 저장하는 것이다.(이때 esp가 4만큼 움직인다.) mov // 소스에서 목적지로 데이터를 복사한다. pop // esp 레지스터가 가르키고 있는 위치의 스택 공간에서 4byte 만큼을 목적지 피연산자에 복사하고 esp 레지스터의 값에 4를 더한다. 함수 에필로그 : 함..
-
FTZ . level9 정리Pwnable/FTZ 2020. 2. 11. 05:26
login : level9 password : apple 가장 먼저 ls 명령어를 통해서 파일들을 확인해보자 [level9]$ ls hint tmp [level9]$ cat hint hint 를 확인해보면 (strncmp : 문자열을 비교하는 함수 / fgets : [저장할 변수, 데이터의 최대 크기, 입출력 방법]) // hint의 소스코드 #include #include #include main(){ char buf2[10]; char buf[10]; printf("It can be overflow : "); fgets(buf,40,stdin); if ( strncmp(buf2, "go", 2) == 0 ) { printf("Good Skill!\n"); setreuid( 3010, 3010 ); s..