rosieblue
article thumbnail
[드림핵(Dreamhack)] __environ
Linux Exploitation/Wargame 2023. 7. 15. 23:26

__environ __environ 변수는 라이브러리에 존재하는 변수로, 스택 주소를 가리킴 즉 __enviorn은 스택 내의 어떤 주소를 값으로 갖는데, 해당 주소는 환경변수 스트링들이 담긴 테이블이라고 할 수 있다. 테이블에 담긴 각각의 주소는 문자열을 담았다. 즉 __environ은 문자열 배열의 포인터라고 할 수 있는 것이다. 해당 문자열들은 환경 변수 정보이다. (따라서 환경 변수 정보들은 stack에 담겨져 있는 것도 덤으로 알아간다~!) 문제 코드 // Name: environ.c // Compile: gcc -o environ environ.c #include #include #include #include #include void sig_handle() { exit(0); } void i..

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력해주세요.
보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력해주세요.
article thumbnail
[Pwnable] 디버깅 심볼 다운로드 및 오프셋 알아내기
Linux Exploitation/settings 2023. 7. 14. 12:17

_rtld_global 관련 워게임을 풀다가 이건 다른 문제 풀이에도 많이 쓰일 것 같아서 포스트를 하나 더 작성한다. 예를 들어 _rtld_global의 주소를 우리가 릭 했다고 해도, 이 구조체 안 멤버 변수들 간의 오프셋이 궁금할 수가 있다. 이때 이 오프셋은 glibc나 우분투 버전 등에 의해 다를 수 있는데 이런 경우 공격 환경과 동일한 버전의 디버깅 심볼을 다운로드 한 후 gdb로 오프셋을 구할 수 있다. 1. 먼저 라이브러리 버전 및 ld 버전을 안 상태에서 glibc 버전을 구할 수 있다 이상태 그대로 libc-2.27.so를 실행해보자 libc를 실행하기 위해서는 ld 버전도 동일해야하는 것 같다. 위 주어진 ld-2.27.so랑 내 칼리에서 돌아가는 로더가 다르기 때문에 문제에서 주어진..

article thumbnail
[Pwnable] 로더 파일 설정, patchelf 사용법
Linux Exploitation/settings 2023. 7. 14. 12:00

0. 로더 http://korea.gnu.org/manual/release/ld/ld-sjp/ld-ko_toc.html GNU 링커, LD 사용하기 - Table of Contents korea.gnu.org 바이너리가 사용하는 로더 종류와 내 컴퓨터 환경의 로더가 다른 경우 제대로 오프셋을 알아낼 수 없음 이때 patchelf 명령어를 사용해 바이너리가 지정한 로더를 사용할 수 있음 1. 설치 $ sudo apt-get install patchelf 2. ow_rtld가 ld-2.27.so를 사용하도록 설정 $ patchelf --set-interpreter ./ld-2.27.so ./ow_rtld 3. 확인 gdb로 ow_rtld에 들어간 다음, vmmap으로 우리가 설정한 로더가 잘 매핑되었는지 확..

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력해주세요.