3

recv 관련해서 궁금한것이 있습니다.

해당 문제의 소스코드입니다
setvbuf(stdin, 0, _IONBF, 0);
setvbuf(stdout, 0, _IONBF, 0);

system(“echo 'system@plt”);

// Leak canary
printf(“[1] Leak Canary\n”);
printf("Buf: ");
read(0, buf, 0x100);
printf(“Buf: %s\n”, buf);

이 소스코드를 보면 read하기전에 system함수로 echo로 출력 한번 print로 출력 두번이 있는데
로컬에서 실행할때는 익스플로잇 코드에
print(p.recvline())
print(p.recvline())
print(p.recv(10))
을 처음에 해주니
b’system@plt\n’
b’[1] Leak Canary\n’
b’Buf: ’

이렇게 출력이 되는데

서버로 공격을 수행하니
b’[1] Leak Canary’ 이것만 출력되고 멈추길래 p.recv(1024)하나만 출력시켜보니
b’[1] Leak Canary\nBuf: ’ 이렇게 출력되더라고요
분명 로컬로 실행시킬땐 b’system@plt\n’ 이게 출력됐었는데 서버로 수행할때는 왜 b’system@plt\n’ 가 출력이 안되는건지 궁금합니다

답변 0개