간단한 개념만 더해진 문제이다. 위는 소스 코드. 스택을 사용하되 0xbfffxxxx 영역을 사용하지 못하게 했다.

이는 스택의 특성을 잘 이해한다면 금방 풀 수 있는 문제다.

간단하니 한 번 생각해보자!







스택은 여러 가지 환경에 의해 크기가 결정된다. 스택프레임의 크기가 변하면 주소도 조금씩 변한다.

더 정확히 말하면, 스택이 커질수록 낮은 주소를 사용해야 한다. 스택은 거꾸로 자라는 성질이 있으므로.

스택 프레임을 매우매우 크게 만들어주면, 스택은 0xbffe 영역을 사용하게 된다.

필자는 무식하게 nop 문자를 10만개 넣어줌으로써 스택 프레임을 크게 해주었고, core 파일을 통해 주소를 확인해보니 0xbffe 영역을 사용하는 것을 알 수 있었다.

이제 RET 영역만 shellcode의 주소로 변조해주면 된다.

0xbffe 중 거의 아무데나 찍어도 nop이 10만개이기 때문에 shellcode가 실행될 것이다.



간단하게 exploit이 성공했고 패스워드를 알아냈다.

vampire의 패스워드는 music world


'Wargame Writeup > LOB(Redhat)' 카테고리의 다른 글

LOB skeletom -> golem  (1) 2015.11.14
LOB vampire -> skeleton  (0) 2015.11.14
LOB orge -> troll  (0) 2015.11.13
LOB darkelf -> orge  (0) 2015.11.13
LOB wolfman -> darkelf  (0) 2015.11.13

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/