일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Baekjoon
- 포너블
- 보안
- 리버싱
- webhacking.kr
- 회고
- docker
- gcp cloud build
- 웹해킹
- nodejs
- kotest
- gcp ci/cd
- pwnable.xyz
- 웹보안
- 파이썬
- node.js
- 백준
- programmers
- 사이버보안
- Batch
- gcp
- 시스템 해킹
- sequelize
- 네트워크
- 스프링 배치
- 프로그래머스
- Python
- hackctf
- spring Batch
- cloud run
Archives
uju's Tech
[Injection] 리눅스 공유라이브러리 로드 본문
<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>
리눅스 명령어 ls와 whoami를 인젝션을 해보고 싶었는데 구현한 코드를 로드 하려면 리눅스의 공유라이브러리가 어떻게
로드되는지 알아야한다. 나아가 이를 수행하기 위한 절차 또한 정리해보았다!!
먼저 리눅스는 프로그램 실행 시 공유 라이브러리가 프로세스 공간에 로딩이 된다.
동일한 라이브러리의 경우 가장 먼저 로드 되어진 것만 사용이 된다.
결과적으로 리눅스에서 공유 라이브러리의 로딩 순서는 아래와 같이 갖는다.
- Dynamic Section 중 need가 설정된 라이브러리
- LD_LIBRARY_PATH
- /etc/ld.so.conf
- 표준 라이브러리 경로
만약 LD_PRELOAD로 라이브러리를 설정하면 가장 1순위의 라이브러리가 로드된다.
따라서 어떤 특정 라이브러리를 로드하는지 알고 이를 LD_PRELOAD로 올리면 내가 원하는 코드를 실행할 수 있다.
이를 위해 수행해야할 단계를 작성해 보았다.
- ltace(Library Trace)로 명령어가 사용하는 라이브러리를 확인한다.
- 인젝션 대상 함수를 오버라이딩 할 라이브러리를 제작한다.
- LD_PRELOAD 환경 변수에 라이브러리를 등록한다.
- 인젝션한 명령어를 실행해보자.
아래는 ls 명령어 injection 수행 포스팅이다..! 과정을 보고싶다면 이 포스팅으로!
https://uju-tech.tistory.com/42
'Programming > C 언어 이모저모' 카테고리의 다른 글
[C: Socket] 소켓 통신을 이용한 구조체 전송 (0) | 2020.07.29 |
---|---|
Whoami Hooking(Injection)하기 (0) | 2020.07.12 |
ls Hooking(Injection) 하기 (0) | 2020.07.08 |
Stack(스택) 구현 및 링크드리스트 (0) | 2020.06.13 |
변수와 상수 (0) | 2020.06.13 |
Comments