ssoL2 TISTORY

[FTZ] LEVEL 17 풀이 본문

challenge/pwn

[FTZ] LEVEL 17 풀이

ssoL2 2021. 2. 23. 10:36

오랜만 ^^

마저 남은 FTZ 끝내겠습니당 ^_^*

 

코드를 보면 LEVEL 16이랑 다른건 오직 하나! 그저 call 포인터를 우회할 함수가 없다는 것?

buf bof일으키고 call 함수는 직접 쉘코드 환경변수를 만들어서 그 주소로 가리킬 것이다.

 

 

export로 "SHELLCODE"라는 환경변수를 등록했고, 쉘코드는 25 byte짜리를 사용했는데 너무 길어서 캡쳐 짤린 것이다.

이때, "\x90"도 넣어줌으로써 안전하게 ^^
쉘코드는 아래 주소에서 참고하였다.

쉘코드 모음 -> m.blog.naver.com/mathboy7/220215329450

 

 

env로 확인해보니 "SHELLCODE"가 생성됨을 알 수 있다.

 

 

/home/level17/tmp로 가서 shell.c를 만들어 "SHELLCODE" 환경변수의 주소를 찾기 위한 코드를 짠다.

 

 

컴파일 한 후 실행파일 실행하면 쉘코드 주소가 나온다. [0xbffffc1f]

 

 

이제 buf 상황을 알기 위해 gdb로 살펴보자. 

attackme랑 같은 이름 길이로 tmp에 복사해서 gdb로 살펴봅시다.

 

 

main함수 보면 어떤 주소값을 ebp-16에 넣는데 이건 printit 위치일 것이므로 [ebp-16]에 쉘코드 주소 넣으면 되고,

fgets 함수 실행 이전에 ebp-56이 buf 주소일 것이므로 최종적으로 56-16=40 byte 더미값 주고 쉘코드 주소 넣으면 된다.

 

 

복사본 attackm2에 test해봤더니 잘 넘어간 듯 싶다.

(당연히 복사본이라 setuid없어서 권한획득 x)

 

 

이제 attackme에 때리니 권한 상승됨을 확인했고 다음 pw도 얻을 수 있다.

'challenge > pwn' 카테고리의 다른 글

pwnable.kr [passcode]  (0) 2021.06.29
[FTZ] LEVEL 18 풀이  (0) 2021.02.23
[FTZ] LEVEL 16 풀이  (0) 2021.02.01
[FTZ] LEVEL15 풀이  (0) 2021.02.01
[FTZ] LEVEL 14 풀이  (0) 2021.02.01
Comments