나의 기록, 현진록

[War Game] LOB bugbear 본문

War Game/LOB

[War Game] LOB bugbear

guswlsdk 2018. 2. 26. 18:41
반응형

LOB bugbear














execve의 주소와 argv[44]의 입력된 값이 같아야한다.


execve함수를 이용한 RTL 기법을 사용해보자.





다음은 execve 함수의 간단한 설명이다.



설명


execve 함수는 새로운 프로그램을 실행시킴과 동시에 현재 프로그램을 종료한다.



사용법


execve (const char *filename, char *const argv [], char *const envp[]);


1. filename이 가리키는 파일을 실행한다.


2. argv는 새로 시작할 프로그램에 전달될 인자이다.


3. 설정된 환경변수를 사용한다.






페이로드는


 

1. main ret 값에 execve 주소를 덮어 함수를 실행한다,


2. execve 함수의 첫번째인자가 실행되고 exit 함수로 인해 바로 종료된다.


3. 종료되어 execve ret에 저장되어 있는 system 함수를 실행할 때 두번째 인자인 /bin/sh이 실행된다.



각각의 주소를 구해보자.

















execve 주소 0x400a9d48


sysytem 주소 0x40058ae0


exit 주소 0x400391e0


/bin/sh 주소 0x400fbff9


NULL 주소 0xbffffffc


페이로드 작성


[ ebp 44 byte ] [ (main ret) execve 주소 ] [ (execve ret) system 주소 ] [ exit 주소 ] [ /bin/sh 주소 ] [ NULL ]



페이로드를 " " 로 감싼 이유는 \x0a를 인식하지 못하기 때문이다.


반응형

'War Game > LOB' 카테고리의 다른 글

[War Game] LOB assassin  (0) 2018.03.01
[War Game] LOB giant  (0) 2018.02.27
[War Game] LOB darkknight  (0) 2018.02.19
[War Game] LOB golem  (0) 2018.02.14
[War Game] LOB skeleton  (0) 2018.02.12