이번에는 vampire로 가는 패스워드를 알아보자.
일단 troll에 로그인한다.
파일 목록을 살펴보면 vampire.c 파일이 있는 것을 볼 수 있다. cat명령으로 출력시켜보자.
코드를 순차적으로 보면 인자의 개수에는 제한이 없고, ret에 덮을 주소는 스택 영역의 주소여야 하며, argv[1][46], 즉 return address의 상위 2번째 바이트가 \xff가 아니어야 한다. 이로 봤을 때 argv[2]에 쉘코드를 삽입하고, ret 영역에 argv[2]의 주소를 덮어씌우면 될 것 같다. 이때 return address의 상위 2번째 바이트가 \xff가 아니어야 한다는 것은 더 낮은 메모리 주소를 가져야 한다는 뜻이다. 스택의 특성상 낮은 메모리 주소를 가지려면 스택프레임의 크키가 커져야 한다. 따라서 쉘코드에 nop를 10만개 삽입해서 공격을 진행해봤다.
일단 vampire파일을 복사한 후 10만개 짜리 nop를 삽입해서 복사 파일을 실행했다.
core파일을 확인해보니 nop 영역이 \xbffe~에 존재했다.
return address를 \xbffe7687로 정하고 공격을 진행했다.
성공적으로 쉘이 실행됐다!
vampire로 가는 패스워드는 music world이다.
'Study > System Hacking' 카테고리의 다른 글
[lazenca] Protection Tech / RELRO & PIC & PIE (0) | 2021.02.22 |
---|---|
[dreamhack] Linux Exploitation & Mitigation Part 3 / SSP & RELRO & PIE (0) | 2021.02.21 |
[lazenca] Protection Tech / ASLR & Canaries (0) | 2021.02.12 |
[dreamhack] Linux Exploitation & Mitigation Part 2 / ASLR & PLT, GOT Section (0) | 2021.02.12 |
[LOB] orge -> troll (0) | 2021.02.09 |