본문 바로가기

ctf

[pwnable.kr] ascii_easy 보호되어 있는 글입니다. 더보기
[pwnable.kr] asm 보호되어 있는 글입니다. 더보기
[pwnable.tw] orw 보호되어 있는 글입니다. 더보기
[0 2017 CTF] char # file char char: 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]=4b292f5bfd7089a2fe69a25677f42a25e7c2b3df, stripped [*] '/ctf/char' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE NX 가 걸려있는 32bit 바이너리이다. 바이너리 분석에 큰 어려움은 없다. 가장 먼저 "/home/char/libc.so" 파일을 .. 더보기
[pwnable.kr] fix 보호되어 있는 글입니다. 더보기
[pwnable.kr] echo1 보호되어 있는 글입니다. 더보기
[pwnable.kr] unlink 보호되어 있는 글입니다. 더보기
[HITCON 2016 CTF] Secret Holder # file SecretHolder SecretHolder: 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, BuildID[sha1]=1d9395599b8df48778b25667e94e367debccf293, stripped [*] '/ctf/SecretHolder' Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE 해당 바이너리의 기능에 대해 간략히 설명하자면, keep_secret() 함수에서는 40.. 더보기
[CodeGate 2017 CTF] angrybird angr 을 이용한 문제이다. ida 를 통해 열어보면 fgets() 가 있음에도 파일을 실행했을 때 어떠한 입력을 받지 않는다. patch 를 통해 정상적으로 입력받을 수 있도록 한다. 그리고 exploit 코드를 돌리면 끝. #exploit.py import angr proj = angr.Project("./angrybird", load_options={'auto_load_libs':False}) path_group = proj.factory.path_group(threads=4) path_group.explore(find=0x404fda, avoid=0x404f97) print path_group.found[0].state.posix.dumps(0) 더보기
[CodeGate 2017 CTF] messenger 간략히 기능에 대해 설명하자면, LeaveMsg : 사용자에게 32byte 이내의 크기만큼 힙에 할당하고, 데이터를 입력받는다.(malloc) RemoveMsg : free() 함수 와 비슷하다고 보면 된다. ChangeMsg : Msg 를 수정할 수 있는데 이 때 크기를 검증하지 않아서 overflow 가 터진다. ViewMsg : 사용자에게 입력받은 데이터를 보여준다. 힙을 보면 size | fd | bk | data 와 같은 구조를 가지고 있다. LeaveMsg(2번) -> ChangeMsg -> ViewMsg 를 통해 Heap 주소를 릭 할 수 있다. RemoveMsg 에서 sub_400b2d() 함수로 가면 그 부분이 unlink 와 비슷한 기능을 하는 것을 알 수 있다. 따라서, ChangeM.. 더보기