내가 제일 싫어하는 FSB 문제이다.
일단 풀어보자.
#include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]){ FILE *secret = fopen("/challenge/app-systeme/ch5/.passwd", "rt"); char buffer[32]; fgets(buffer, sizeof(buffer), secret); printf(argv[1]); fclose(secret); return 0; }
printf 함수에서 Format String 쓰지 않고 그대로 출력하기 때문에 FSB 취약점이 발생한다.
buffer 변수에 패스워드가 저장되므로 argv에 %8x를 넣어 값을 읽어온다.
딱봐도 정말 수상하게 긴놈이 보인다.
주소처럼 생긴 804b008을 제외한 나머지를 뽑아본다.
39617044282936646d617045b7000a64b7e5ae65b7fe 이러한 값이 나왔는데...
md5 나 다른 해시 형태는 아닌것 같아 hex로 변환해보았다.
저장될 때 리틀엔디안으로 저장되므로
출력되는 값을 리틀엔디안으로 바꾼 뒤 출력하면 된다.
'Wargame > Root-me' 카테고리의 다른 글
App - System 02 (0) | 2017.05.18 |
---|---|
App-System 01 (0) | 2017.05.18 |