3번째 pwnable문제이다!
우선 위에 적힌 것들을 다운로드 해 보자
이렇게 다운로드를 하고 난 후에
bof.c파일을 살펴보자
func()함수에 들어온 key값이 0xcafebabe 와 같으면
쉘을 얻을수 있다.
하지만 main함수에서 이미 값을 0xdeadbeef로 줘버려서
key 값을 줄수가 없다.
하지만 우리는 처음 문제를 주어질 때에 버퍼오버플로우 문제인 것을 보았다.
이때 gets함수가 여기서 문제를 풀 열쇠이다.
gets함수는 입력값을 넣어주는데 실제 코딩을 할 때에는 버퍼오버플로우 때문에 warning이 뜨는 함수이다.
우선 gdb로 보자!
이때 우리는 어디까지 버퍼오버플로우로 값을 넣어서 cafebabe와 비교할 때에
같게 되는 지를 보자.
gets 함수에서의 입력은 <+29>에서 본 ebp-0x2c이고
키값은 ebp+0x8이다.
따라서
52만큼의 차이를 채워준다면 우리는 버퍼오버플로우 된 값을
key의 값으로 넣어줄 수 있다.
따라서 52바이트를 삽입한 후에 cafebabe를 넣어주면
쉘을 얻을수 있고
flag를 실행시키면 답이 나온다!
'Pwnable > Pwnable.kr' 카테고리의 다른 글
pwnable.kr [asm] (0) | 2018.08.01 |
---|---|
pwnable.kr 4번 [flag] (0) | 2018.04.14 |
pwnable.kr 2번 [collision] (0) | 2018.04.12 |
pwnable.kr 1번 [fd] (0) | 2018.04.10 |