쉘은 딴거같은데 결과가 안나오는 것 같아요

쉘 딴거같은데 아무것도 안뜨는데 잘못한 걸까요??

image.png

코드입니다

#pwnable
작성자 정보
답변 1
2dedce
워게임 고인물

$ 기호는 쉘을 딴 게 아니고 p.interactive()를 실행하면 쉘을 따든 안 따는 나오는 것입니다.
보면 [*] Got EOF while reading in interactive가 있는데 이것은 통신이 끊겼다는 얘기입니다.
통신이 끊길만한 이유는 서버측(remote) 프로그램이 정상 종료되거나, 아니면 에러로 종료되는 경우입니다. 모두 쉘을 따는 데 실패한 것입니다.

그러므로 페이로드가 잘못된 것이므로 고쳐야합니다

체크리스트

  1. 스택에 위치한 buf의 주소는 주소영역랜덤화보호기법(Address Space Layout Randomization, ASLR)에 의해 실행할 때마다 달라지고 있습니다. 따라서 이에 맞춰서 payload를 구성해야합니다. 프로그램을 실행시키면 buf의 주소를 처음에 알려주고 있으므로 이것을 활용해야 할 것입니다.
  2. payload는 scanf("%s")에 의해 입력 받고 있습니다. scanf가 입력 받을 때는 공백(' ', 0x20), 개행('\n', 0x0a), 탭(\t, 0x09) 등의 구분 문자가 있으면 거기까지만 받아들이고 그 이후로는 입력 버퍼에 남겨놓습니다. 따라서 payload에 이러한 문자가 없도록 구성해야 합니다. (예를 들어 scanf("%s%s", &buf1, &buf2);가 있으면 입력으로 ABC 123을 주었을 때 buf1, buf2에 각각 ABC, 123이 들어갑니다. 하지만 scanf("%s", &buf);에서 ABC 123을 입력하면 buf에 ABC가 들어가고 123은 입력 버퍼에 남게 됩니다.)
2023.11.07. 10:40
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기