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

+ Recent posts