메모리 바이트 관련

name이랑 cammand가 76바이트 차이가 나는데 왜 idx에 19를 넣는건가여..?
char형은 1바이트 단위 아닌가여?

#pwnable
작성자 정보
답변 1

문제에서는 32비트 환경에서 컴파일 되어 있기 때문에 포인터 한 개의 크기가 4바이트입니다. 그래서 namecommand 가 76바이트 떨어져 있다고 하면, 실제로 index로 따지면 76/4 = 19가 됩니다.

p.s.)
코드를 보면 배열은 포인터 배열로 되어 있고,

char *command[10] = { "cat",
    "ls",
    "id",
    "ps",
    "file ./oob" };

리눅스의 file 명령어 등을 통해 해당 파일이 32비트 환경에서 컴파일 된 것을 알 수 있습니다. 따라서 포인터 한 개의 크기는 32비트, 즉 4바이트입니다.

$ file out_of_bound
out_of_bound: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=d83d8fb5458a8e0b408a23c97dfed327c1a8462c, not stripped
2023.07.29. 14:25
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기