일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Batch
- gcp cloud build
- programmers
- pwnable.xyz
- 회고
- node.js
- Baekjoon
- 보안
- spring Batch
- 포너블
- nodejs
- gcp ci/cd
- cloud run
- 리버싱
- gcp
- 사이버보안
- 시스템 해킹
- 네트워크
- Python
- 파이썬
- 웹해킹
- 백준
- docker
- webhacking.kr
- hackctf
- 프로그래머스
- 웹보안
- kotest
- 스프링 배치
- sequelize
Archives
uju's Tech
ls Hooking(Injection) 하기 본문
<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>
특정한 파일이 보이지 않도록 (ls) Injection을 진행해보았다.
앞서 원리를 알고싶다면 아래 포스팅을 참고!
https://uju-tech.tistory.com/43
정확히 말하면 Injection이지만 Hooking의 개념이라고 볼 수 있기에 Hooking이라고 제목을 지어보았다. ㅎㅎ
필자는 ls_hooking.c라는 파일을 해당 디렉토리에서 볼 수 없게 하고 싶었다.
ltrace ls를 통해 ls 명령어가 어떠한 구조를 갖고 실행되는지 살펴보자.
살펴보니 memcpy가 동작하여 각 파일명을 copy하여 동작함을 볼 수 있다.
그러면 이제 어떤 함수를 통하는지 확인했으니 해당 함수를 오버라이딩 해보자!!
이 때 memcpy함수의 원형을 가져오는 것이 중요하다.
ho.c라는 파일 안에 memcpy라는 함수 원형을 가져와 내부적으로 strcmp를 사용해보자.
아래는 해당 코드이다.
//c언어. // ho.c
#include <stdio.h>
#include <string.h>
void* memcpy(void* dest, const void *src, size_t count){
char* dst8 = (char*)dest;
char* src8 = (char*)src;
if(strcmp(src,"ls_hooking.c")==0){
return dest;
}
while (count--) {
*dst8++ = *src8++;
}
return dest;
}
그 후 확장자 so인 파일을 만들어 주기 위해 gcc - shared -fPIC -o ho ho.c
수행 할 때 아래 사진과 같이 환경변수를 사용하여 라이브러리 로딩 순서를 바꾸어 실행한다.
따라서 위에서 확인 할 수 있듯이 ls_hooking.c 파일이 보이지 않음을 확인 할 수있다.
gitgub:https://github.com/ujusy/C_Hooking
'Programming > C 언어 이모저모' 카테고리의 다른 글
[C: Socket] 소켓 통신을 이용한 구조체 전송 (0) | 2020.07.29 |
---|---|
Whoami Hooking(Injection)하기 (0) | 2020.07.12 |
[Injection] 리눅스 공유라이브러리 로드 (0) | 2020.07.08 |
Stack(스택) 구현 및 링크드리스트 (0) | 2020.06.13 |
변수와 상수 (0) | 2020.06.13 |
Comments