둘둘리둘둘리둘둘리둘둘리둘둘리둘

[Hacker school FTZ] Level17 -> Level18 본문

War game/해커 스쿨 FTZ

[Hacker school FTZ] Level17 -> Level18

dool2ly 2015. 8. 20. 20:14

#include <stdio.h>


void printit() {

  printf("Hello there!\n");

}


main()

{ int crap;

  void (*call)()=printit;

  char buf[20];

  fgets(buf,48,stdin);

  setreuid(3098,3098);

  call();

}


Level16(http://dool2ly.tistory.com/23)과 다른점은 shell을 띄워주는 함수가 없다는것 뿐이다.

Level16과 마찬가지로 변수 call의 내용이 printit의 주소가 아니라 쉘 코드의 시작 주소를 넣어주면 되겠다.

고맙게도 setreuid가 있으니 쉘 코드는 단순히 shell만 실행시켜주면 된다.


Level11(http://dool2ly.tistory.com/18)에서 부터 해왔듯 환경변수 sh에 쉘코드를 등록해놓고 call의 자리에 환경변수의 sh의 주소를 넣어주면 Level18의 쉘을 딸수 있다.



[그림 1]


buf의 크기는 전과같이 56-16= 40byte이니 페이로드는 아래와 같다.

[ 더미(40) | 쉘코드 주소 ]



--풀이--


Comments