LOB 문제풀이 일기(10)
주제 |
LOB 스켈레톤 |

요넘 추가
환경변수도 못쓴다 참고로. 버퍼도 그렇고
길이 48제한이라 스택에서 할 수 있는게 없음.
이건 공유라이브러리를 활용한 rtl chain말곤 답이 없다.
혹은 gadget을 활용해볼 수도 있겠는데... 찾아보자.

execve함수 찾음
레지스터에 "/bin/sh"의 주소를 넣어주고 0x400a9d48를 ret로 넣어주면 끝!
gcc -o skeleton2 skeleton.c gdb skeleton2 break main r 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 요렇게 찾음 ㅡ,