ii4gsp
LOB - Level11 [skeleton -> golem] 본문
buffer와 buffer+48에서 0xbfffffff까지 모두 0으로 초기화 시킨다.
LD_PRELOAD 환경변수를 이용하여 문제를 풀어야한다.
printf()함수를 호출하면 libc를 참조하는게 아니라 LD_PRELOAD에 정의되어있는 라이브러리 내의 함수를 먼저 참조한다.
그리고 해당 함수가 존재하면 호출한다.
#include <stdio.h>
int main()
{
return 0;
}
빈 파일을 하나 만들어주자
쉘 코드 이름으로 컴파일을 해주었다.
쉘 코드 이름으로 컴파일 하고, 환경변수 LD_PRELOAD에 파일을 등록해주었다.
gdb로 파일을 열고 main()함수가 끝나기전 <main+166>부분에 break point를 걸어주었다.
\xbf 조건을 맞춰주고 공유 라이브러리 영역은 스택 영역보다 낮은 주소에 위치하기 때문에 ebp-3000쯤의 메모리를 살펴보자
0xbffff590을 ret로 잡고 페이로드를 작성해주겠다.
i
________
buffer
________
sfp
________
ret
(buffer + sfp) + ret
payload
./golem $(python -c 'print "\x90" * 44 + "\x90\xf5\xff\xbf"')
'시스템 해킹 > LOB' 카테고리의 다른 글
LOB - Level13 [darkknight -> bugbear] (0) | 2020.01.21 |
---|---|
LOB - Level12 [golem -> darkknight] (0) | 2020.01.21 |
LOB - Level10 [vampire -> skeleton] (0) | 2020.01.18 |
LOB - Level9 [troll -> vampire] (0) | 2020.01.16 |
LOB - Level8 [orge -> troll] (0) | 2020.01.16 |
Comments