FTZ level15 Write-Up

2019. 7. 24. 01:01
728x90
728x90
728x90

FTZ level15 풀어보자.

 

[사진 1]

hint를 보면 이전 문제인 level14의 코드와 거의 똑같다. 다른 점은 check 변수가 포인터 변수로 바뀌었다. 그래서 이전 문제의 페이로드를 입력하여도 쉘이 떨어지지 않는다. check 변수가 포인터 변수로 바뀌었으므로 0xdeadbeef 값의 주소를 check 포인터 변수에 입력하면 된다.

 

 

[사진 2]

먼저 attackme 파일을 /home/level15/tmp/ 디렉터리에 복사한다.

그리고 gdb를 통해 main 함수의 어셈블리어 코드를 보면 이전 문제의 buf, check 변수의 위치와 동일하다.

따라서 스택 구조는 동일할 것이다. 0xdeadbeef 값의 주소를 찾아야 하는데 위와 같이 check 포인터 변수의 값을 비교하는 부분에서 0xdeadbeef 값을 직접 사용하고 있다.

 

 

[사진 3]

해당 opcode를 확인해보면 0xdeadbeef 값의 주소를 구할 수 있다.

 

 

[사진 4]

스택은 위와 같이 이전 문제와 동일하게 형성된다. buf 변수부터 check 포인터 변수 직전까지의 크기는 40bytes이다.

 

 

[사진 5]

따라서 임의의 값 "\x90"을 40개 넣어주고 포인터 변수 check의 값으로 앞서 확인했던 주소 0x080484b2를 넣어주어 attackme 파일을 실행하면 level16 계정의 권한으로 쉘이 실행된다. 그리고 my-pass 명령어로 level16 계정의 password를 확인할 수 있다.

728x90
728x90

'Wargame > FTZ' 카테고리의 다른 글

FTZ level17 Write-Up  (0) 2019.07.24
FTZ level16 Write-Up  (0) 2019.07.24
FTZ level14 Write-Up  (0) 2019.07.24
FTZ level13 Write-Up  (0) 2019.07.24
FTZ level12 Write-Up  (0) 2019.07.23

+ Recent posts