해커스쿨 f.t.z
-
level 16. 풀이System hacking training/Hackerschool F.T.Z 2017. 12. 3. 17:39
해커스쿨 F.T.Z level 16 풀이를 해보았습니다. 로그인 후 힌트 파일을 확인하면.. 이전 문제들과는 다르게 main() 외에 2개의 함수가 더 있는것을 확인할 수 있습니다. void shell()에서 level 17의 권한을 걸고, system()를 이용하여 쉘을 띄어주는군요ㅎ 또 main()에서 void (*call)() = printit; 이 부분을 중요하게 볼 필요가 있는데요. c언어를 공부하신 분들은 아시겠지만 이는 함수 포인터라고 하는 녀석입니다. 말 그대로 함수를 담는 변수라고 할 수 있는데요. 아시다시피 포인터 변수는 주소값을 저장하는 변수입니다. 배열과 마찬가지로 printit 과 같이 함수의 이름을 넣어줌으로서 시작 주소를 call 이라는 함수 포인터에 넣어줍니다. 따라서 쉘을 ..