한땀한땀 정성들인 코딩
LOB 문제풀이 일기(6) 본문
extern char **environ;
??
함수 밖의 전역 범위 프로그램 전체에서 유효( 다른 파일간 참조 가능 ) 정적 데이터영역( data section ) |
int main(char **envp) 이나
extern char **environ은 같은 구문이다.
extern 구문은 첨봄..
중간에 보면 환경변수를 초기화 하는 코드가 있다. memset으로
환경변수를 못쓰게 하는거 같은데.. 난 여태 문제풀면서 환경변수 쓴적이 없어서 학습이나 하자.
리눅스 상에서 환경변수 설정 export PYTHON_HOME = /usr/lib/python 설정 env | grep PYTHON_HOME 확인 source /etc/bash.bashrc 적용 unset 환경변수명 -해제하기 |
if(argv[1][47] != '\xbf'){
printf("stack is still your friend.\n");
exit(0);
}
47번째 문자는 무조건 \xbf여야 한다.
payload를 구성해보자
nop(15byte)+shellcode(25byte)+sfp(4byte)+ret(4byte)
흐미 ret에 bf가 무조건 들어가야 되네;;
47번 index니깐 정확히는 48번째이고 ret의 첫 주소 시작이 \xbf이다.
근데 지금까지한 ret가 bf로 시작 했으므로 그다지 영향이 있을까??
하여간 gcc로 orc복사후 디버깅 실행, ret를 찾아보자
ret는 0xbffffb4c로 예상
그러나 ret가 차이가 큰지 먹히지가 않는다..
페이로드 변경
dummy(44byte)+ret(4byte)+nop(200byte)+shellcode
정답 : cantata
'보안 > LOB' 카테고리의 다른 글
LOB 문제풀이 일기(8) (0) | 2021.03.27 |
---|---|
LOB 문제풀이 일기(7) (0) | 2021.03.27 |
LOB 문제풀이 일기(5) (0) | 2021.03.27 |
LOB 문제풀이 일기(4) (0) | 2021.03.27 |
LOB 문제풀이 일기(3) (0) | 2021.03.27 |