분류 전체보기(66)
-
[CTF write up] WITHCON 2021 - chunk_manager : Unsorted bin leak (WhiteHatContest)
당시 솔버 수가 굉장히 적은 문제였던 걸로 기억하는데, 지금 풀어보니 말도 안되게 쉬운 문제였다.. 풀고 난 후 출제진 설명을 보니 AAW 취약점으로 breaking calloc 버그를 일으켜 메모리 주소를 유출하는 것이 의도된 풀이인 것으로 확인된다. 하지만 breaking calloc 트릭을 알지 못하더라도 unsorted bin의 특징을 알면 매우 쉽게 메모리를 유출 할 수 있다. 작은 크기의 청크 할당이 요청 될 경우 unsorted bin에 청크가 있을 때 해당 청크를 떼주게 된다. 따라서 큰 unsorted bin 크기의 청크를 해제하고 작은 크기의 청크를 할당하면 unsorted bin에 들어있는 프리 청크 바로 위에 요청한 청크가 할당된다. AAW로 내부 값을 전부 채워주면 unsorted..
2022.05.02 -
[CTF write up] Securinets CTF 2022 - memory : Non buffer-overflow ROP
AAW, AAR 취약점이 있는 바이너리다. 문제는 모든 메모리 보호 기법이 걸려있는데다가 seccomp filter까지 있어 ORW와 mprotect syscall 밖에 사용하지 못한다. 일단 heap 영역에 메모리를 할당할때 메모리 초기화 과정이 있지 않아서 더미 값이 있는 해제된 메모리를 재사용하면 heap 주소를 유출할 수 있다. 이후 AAW 취약점을 통해 heap 영역에 있는 count 변수를 음수로 바꾸어주어 원하는 만큼 AAW, AAR이 가능하도록 만들 수 있다. 그 다음은 heap 영역에 있는 libc 주소를 유출하고 libc 주소를 기반으로 다시 environ 포인터 유출하고 다시 stack 값을 기반으로 code 영역 주소를 연쇄적으로 유출하면 된다. PIE와 ASLR로 랜덤화된 메모리 ..
2022.04.12 -
[CTF write up] Codegate CTF 2022 Junior - Lotto : Basic Window Reversing
import sympy a1 = sympy.Symbol('a1') a2 = sympy.Symbol('a2') a3 = sympy.Symbol('a3') a4 = sympy.Symbol('a4') a5 = sympy.Symbol('a5') a6 = sympy.Symbol('a6') eq1 = a2 + 2 * a1 - 20 eq2 = a3 + 7 * a1 - a2 - 35 eq3 = 7 * a2 - 2 * a1 - a3 - 64 eq4 = 5 * a3 + 3 * a1 - a2 - 135 eq5 = 3 * a5 + a4 - 156 eq6 = a6 + 3 * a4 - a6 * a5 + 1530 eq7 = a6 + a5 - a4 - 46 result = sympy.solve((eq1,eq2,eq3,eq4,eq5,..
2022.03.06 -
[CTF write up] Line CTF 2021 - bank : Complex Binary
from pwn import * import ctypes import time context(arch = "amd64", os = "linux") def command_adduser(id, ps): p.sendlineafter(b': ',b'6') p.sendlineafter(b': ', id) p.sendlineafter(b': ', ps) def command_login(id, ps): p.sendlineafter(b': ',b'7') p.sendlineafter(b': ', id) p.sendlineafter(b': ', ps) def command_loan(): p.sendlineafter(b': ',b'4') def command_logout(): p.sendlineafter(b': ',b'8'..
2022.03.03 -
[CTF write up] Codegate 2022 General - CAFE : PHP parse_url Spoofing to XSS
문제 파일에 admin 계정 정보가 포함되어 있어서 그대로 로그인하면 플래그를 얻을 수 있는 띠용한 Unintened 풀이가 있었다고 한다. 평범한 XSS 문제다. XSS 취약점이 있는 게시판에 글을 쓸 수 있고 report를 통해 봇이 자바스크립트를 실행하도록 할 수 있다. function filterHtml($content) { $result = ''; $html = new simple_html_dom(); $html->load($content); $allowTag = ['a', 'img', 'p', 'span', 'br', 'hr', 'b', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'strong', 'em', 'code', 'iframe']; foreach($allowTag..
2022.03.02 -
[CTF write up] Codegate CTF 2022 Junior - UDgame : UP and Down Misc
from pwn import * import random context.log_level = 'debug' p = remote("52.79.50.189", 4321) def check(inp): p.sendlineafter(b':',str(inp)) res = p.recvuntil(b'!') print(res) if b'codegate' in res: p.interactive() if b'DOWN' in res: return 'DOWN' elif b'UP' in res: return 'UP' elif b'funny' in res: return '??' else: return 'True' con = 1 p.sendlineafter(b'>',b'y') while(True): if con == 0: break..
2022.02.27