내가 제일 싫어하는 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

+ Recent posts