패킹 질문

전 이전까지 주소를 보낼 때 p64라든지 p32로 패킹을 해서 보냈는데 이 문제는 str()으로 해서 보내야 하드라구요,,, 왜 str()로 해서 보내야 하는지, p64()패킹해 보내면 왜 안되는지, 언제 str()로 해서 보내야하고 언제 패킹해서 보내야하는 지 궁금합니다.

#pwnable
작성자 정보
답변 1
avatar
김진우
대표 업적 없음

Little-endian에 관해서 더 자세히 이해하신다면 어떤 상황에 str()을 써야되는지 p64()를 써야되는지 알 수 있을 겁니다.

일반적으로는 그냥 문자열을 보낼때 str()을 쓰고 메모리 주소를 보낼때 p64()을 씁니다. 문자열 같은 경우 메모리 상에서 8바이트 단위로 반전되어서 저장되고 읽히지만 메모리 주소는 정방향 그대로 저장되고 읽힙니다. 이때 사용자로 부터 받는 모든 입력은 역방향으로 저장되기 때문에 문자열은 그냥 그대로 전송하는 것이고 메모리 주소는 p64()로 반전시켜서 메모리에 입력되었을때 다시 반전되어 정방향으로 저장되게 하기 위함입니다.

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