완료됨
40 코인 시스템해킹 우분투 버전

안녕하세요, 최근 시스템해킹을 공부하고 있는 대학생입니다.

다름이 아니라, 시스템해킹 공부 시 워게임을 풀 때,
워게임의 환경과 동일한 환경에서 진행해야 원활히 문제가 풀리는 것으로 알고 있습니다.
일반적으로 도커파일이 주어지던데, 도커파일 내에 기초적인 패키지가 실려있지 않아
현재로서는 매번 python, vim, pwngdb 같은 패키지를 다운해주고 있는 상황입니다.

개인적인 생각으로는 매번 다운로드하지 않아도 실행될 수 있게 할 수 있는 방법이 분명 존재할 것으로 예상되는데,
고수 여러분들은 어떻게 이 문제를 해결하셨는지 궁금합니다!!!!

저를 꼭 도와주셨으면 합니다

감사합니다.

작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 2

libc 파일이 주어지지 않은 경우는 도커 빌드해서
명령어로 libc 파일만 빼오고

pwninit 명령어를 통해 자동으로 patch 하는 방식으로 풀고 있습니다

pwninit 사용 시 자동 패치, 기본 페이로드 solve.py 가 자동으로 폴더에 생성됩니다

2026.02.01. 00:43
질문자가 채택한 답변입니다. 좋은 지식을 공유해줘서 고마워요!

포너블 문제를 풀 때 로컬 환경을 맞추는 방법은 여러 가지가 있지만, 많이들 쓰는 방식으로 정리하면 다음 세 가지가 대표적입니다.

  • Docker 기반 환경(pwn용 ubuntu)을 사용하는 방법
    Ubuntu 18.04 / 20.04 / 22.04 등 버전별로 준비된 도커 컨테이너를 만들어둔 뒤, 문제 바이너리와 비슷한 glibc 버전을 쓰는 우분투 컨테이너로 문제를 가져와서 그 안에서 분석/익스플로잇을 진행하는 방식입니다.

  • patchelf로 loader/GLIBC를 바이너리에 직접 붙이는 방법
    제가 자주 쓰는 방식인데, 문제에서 제공된 glibc와 loader를 로컬에 가져온 다음 patchelf를 이용해 바이너리가 참조하는 loader와 glibc를 바꿔 실행하는 방식입니다.

  • LD_PRELOAD 환경변수를 사용하는 방법
    LD_PRELOAD 환경변수를 사용해서 환경을 맞춰주는 방법도 있습니다.

이런 방법을 사용해서 환경을 최대한 맞춰주고 로컬에서 문제를 푸셨더라도 리모트에서는 안풀리는 경우가 있습니다. 그럴땐 도커에서 돌아가는 바이너리에 직접 디버깅을 하여서 해결을 하셔야 합니다.
Reference: https://blog.sechack.kr/136

저는 지금까지 patchelf로 많이 문제를 풀었는데 로컬에서 풀리고 리모트에서 안풀리는 경우는 별로 없었습니다.

2026.01.31. 01:48