nebula_level02

해킹/시스템 2015. 10. 28. 17:54

nebula_level02 포스팅입니다.


당연히 먼저 flag02를 실행시켜봤습니다.

무슨 명령어를 실행해서 이런 출력이 나왔다고까지 친절하게 알려주시네요

gdb로 열어보겠습니다.




함수호출 위주로 살펴보니 getenv함수와 asprintf함수가 연속으로 실행되는것이 눈에 띕니다.

asprintf함수는 문자열을 세팅해 주는 함수이고.. 상수로 보이는 0x80486b5에는 세팅될 문자열의 폼, 그 뒤인 esp+0x8 부분에 무언가 들어있겠군요.

일단 +122부분까지 실행시킨 후에 해당 스텍에 무엇이 들어있나 확인해 보겠습니다.





0xbfc46991이라는 주소가 들어있고 예상대로 해당 주소에는 level02가 들어있습니다. getenv함수가 반환되면서 eax를 통해 esp+0x8에 level2문자열이 있는 주소가 들어간 것으로 보입니다.




getenv에 인자로 들어가는 상수의 주소 0x80486b0을 보니 USER라는 문자열이 보입니다. level02는 USER환경변수에서 얻어와서 들어간 것이군요.



앞에 echo명령어에 인자값으로 들어가는 것을 방지하기 위해 tset;로 명령을 끝내주고 /bin/sh를 실행시켜야 합니다.

위와 같이 USER 환경변수를 세팅해주고 flag02를 다시 실행시키니 성공적으로 쉘이 떴습니다.


끝-









'해킹 > 시스템' 카테고리의 다른 글

nebula_level06  (1) 2015.11.04
nelbula_level05  (1) 2015.10.29
nebula_level04  (0) 2015.10.28
nebula_level03  (0) 2015.10.28
nebula_level01  (0) 2015.10.28
Tags
Social