로컬과 서버의 환경 차이 관련 질문입니다.

공부하면서 궁금한 점이 하나 생겼습니다.
보면 로컬 환경과 서버 환경이 다르다보니 로컬에서는 잘 동작하는 것이 서버에 제출하려고 보면 동작하지 않는다던가 그 반대의 경우를 자주 접했습니다.(libc의 버전이 다르다던가 운영체제의 버전이 다르다던가 등등) 특히 로컬에서는 안되는데 서버에서는 잘 동작하는 경우는 더 힘든 것이 gdb로 디버깅하면서 문제를 풀다보면 로컬에서 먼저 진행을 해보게 되는데 아무리 해도 맞는 거 같은데도 계속 아니라고 해서 삽질하다가 "에라 모르겠다" 하고 냈더니 '성공'이 뜨면 그 기분이 참...묘합니다.

혹시 다른 분들께서는 이러한 환경의 차이에 어떻게 대응하시며 문제를 푸시는지 알고싶습니다.

#시스템_해킹
작성자 정보
답변 2
avatar
김진우
대표 업적 없음

일반적으로는 Docker로 포너블 환경을 구성합니다. 여러 우분투 버전의 Docker 이미지를 잔뜩 만들어놓고 때에 따라 맞는 버전으로 사용하는거죠... 가끔 Docker로 구현할 수 없는 환경의 문제가 나올 경우 유출된 메모리 값을 이용해서 어떻게든 libc 버전을 알아내던가 문제가 발생하는 부분을 찾아서 대충 어디가 달라서 잘못된건지 알아내던가.. 그런 방법을 씁니다.

2022.05.08. 01:00
avatar
movptr
공부벌레

vagrant 나 docker 을 이용하는 방법도 있고 라이브러리 파일을 받아서 pwntools 에서 l = ELF("라이브러리") 로 해두고 라이브러리 파일만 교체해서 익스플로잇하는 방법도 있고 다양하지만 계속 시도해보는 수밖에 없습니다.

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