FTZ level14 Write-Up
2019. 7. 24. 00:36
728x90
728x90
728x90
FTZ level14 풀어보자.
hint를 보면 bof 문제인 것을 알 수 있다. 이전 문제들과 다른 점은 setreuid 함수로 level15 계정의 권한을 획득하고 system 함수로 쉘을 실행시켜준다. 따라서 fgets 함수에서 buf 변수의 버퍼를 넘치게 해서 check 변수의 값을 0xdeadbeef로 넣어주면 될 것 같다.
먼저 attackme 파일을 /home/level14/tmp/ 디렉터리에 복사한다.
그리고 gdb를 통해 main 함수의 어셈블리어 코드를 보면 fgets 함수를 호출하기 전에 ebp-0x38 주소를 eax 레지스터에 저장하는 것으로 보아 이 곳이 변수 buf의 공간이다. 그리고 ebp-0x10 값과 0xdeadbeef 값을 비교하는 것으로 보아 ebp-0x10 이 곳이 check 변수의 공간이다.
따라서 스택은 위와 같이 형성될 것이다. buf 변수부터 check 직전까지의 크기는 40bytes이다.
위와 같이 임의의 값 "\x90"을 40개 넣어주고 변수 check의 값으로 0xdeadbeef를 넣어주어 attackme 파일을 실행하면 level15 계정의 권한으로 쉘이 실행된다. 그리고 my-pass 명령어로 level15 계정의 password를 확인할 수 있다.
728x90
728x90
'Wargame > FTZ' 카테고리의 다른 글
FTZ level16 Write-Up (0) | 2019.07.24 |
---|---|
FTZ level15 Write-Up (0) | 2019.07.24 |
FTZ level13 Write-Up (0) | 2019.07.24 |
FTZ level12 Write-Up (0) | 2019.07.23 |
FTZ level11 Write-Up (0) | 2019.07.23 |