보안/LOB

LOB 문제풀이 일기(10)

romance penguin 2021. 3. 27. 17:38
반응형

 

주제

LOB 스켈레톤

요넘 추가

환경변수도 못쓴다 참고로. 버퍼도 그렇고

길이 48제한이라 스택에서 할 수 있는게 없음.

이건 공유라이브러리를 활용한 rtl chain말곤 답이 없다.

혹은 gadget을 활용해볼 수도 있겠는데... 찾아보자.

 

execve함수 찾음

레지스터에 "/bin/sh"의 주소를 넣어주고 0x400a9d48를 ret로 넣어주면 끝!

gcc -o skeleton2 skeleton.c

gdb skeleton2

break main

info functions <- 사용되는 모든 함수목록을 보여주는 명령어



근데 어떻게 레지스터에 주소를 넣어줘야 하나?

혹은 스택에 넣어도 되고 

환경변수를 지우니깐 스택에 있는 "/bin/sh"문자열도 사라진다.

 

공유라이브러리 영역을 사용해야 한다.

일단 공유라이브러리 생성방법

gcc -c -fPIC shared.c

gcc -shared -o shared.so shared.o

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/경로명


확인 방법 : echo $LD_LIBRARY_PATH

 

그중에서도 LD_PRELOAD 환경변수에 공유라이브러리 파일을 세팅하면 무엇보다도 먼저 올려준다.

힙과 스택사이 공유라이브러리 영역에 파일명도 올라가므로

1. 공유라이브러리 파일명을 쉘코드로 해서 제작, 내용은 무엇이 되어도 상관없다.

2. LD_PRELOAD에 환경변수명을 올려 주고 

3. 환경변수 명이 올라가는 주소를 찾아 RET를 대체해주면 끝

익스플로잇 하기전에 선작업을 좀 해주고

공유라이브러리 섹션 주소를 아는 방법?

구글링해봐도 죄다 노가다로 찾더라 ㅡ ,ㅡ

x/10000x 0xbfff0000 요렇게 찾음 ㅡ,

 

반응형