원격에서 왜 계속 실패할까요?

로컬에서는 문제 해결이 됐는데, 원격 시도는 계속 실패합니다.
앞서신 분들도 같은 문제가 발생한 것으로 보이는데, 명확한 답변이 없네요.
와이어샤크로 확인해보니 puts 가젯은 정상적으로 실행되었고, 이후 페이로드도 정상적으로 전송이 됐는데, 무슨 문제인지 서버에서 종료 신호를 보내는군요
libc 버전 문제이거나, read 가젯에서 세 번째 인자를 제대로 설정하지 않아서 오류가 난 것으로 보이지만 로컬에서는 통과가 됐는데 참 답답합니다.
혹시 Alignment 문제가 아닌가 해서 nop 가젯 추가해도 같은 결과가 나옵니다. 저 좀 도와주세요 ㅠㅠ

#pwnable
작성자 정보
답변 2
avatar
Sechack
CTF First Place

일단 Alignment문제이면 nop이 아니라 ret가젯을 추가해야 합니다. 지금 정확히 뭘 어떻게 하신지 모르는 상황이라 Sechack#1869 여기로 DM주시면 감사하겠습니다.

2022.03.21. 19:46
열세번째달
대표 업적 없음

문제 해결했습니다.

제 실습 환경인 WSL 기반 우분투 18 내에 저장된 libc-2.27과 서버에서 동작하는 libc-2.27에 대한 함수 옵셋 정보가 달라서 공격 시도가 실패한 것으로 파악했습니다.
아무래도 실제 리눅스가 아니라서 실제 모듈가 차이가 있는 것으로 추정됩니다.
따라서 ELF의 symbols 함수로 로컬 모듈에서 정보를 추출하는 방식이 아니라, https://libc.nullbyte.cat/ 페이지에서 얻은 read()와 system()의 차이 값을 이용하면 문제가 풀립니다.

도움을 주신 Sechack님께 감사드립니다.

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