위와 같은  파일 목록을 확인 할 수 있다.



서버 정보는 위와 같았다.



파일 권한 확인



실행하였을 때



실행하였을 때2



현재 경로



random_flag는 어떻게 되어있는지 확인 할 수 없었지만 아래에 flag 값이라고 생각될 문장이 있었다. 



다른 곳에선 쓰기를 할 수 없었지만 tmp에서는 할 수 있었다.

cd ../../../tmp


 

여기서 최초로 봤던 file에게 심볼릭 링크를 건다. 


flag, key, random_flag 파일을 계속 돌리면서 분석해본 결과 아래와 같은 형태를 가진 것을 유추할 수 있었다.

유추 한 것을 토대로 푸는 방법도 추리 해보았다.


1. flag * key = random : 최초에 있던 형태

2.flag * random = key : 위에서 나온 random 값을 key파일로 치환

3. key * random = flag : 위에 나온 key 값을 flag파일로 치환 



1. flag * key = random 

random이 나왔던 값을 ekey에 저장하고 기존에 있던 key를 삭제 그리고 ekey를 key로 변경



2. flag * random = key 

key가 나온걸 위와 같은 방법으로 flag로 치환

그리고 앞에있던 Here is your encrypted key: 를 제거시켜줘야함



: 앞에 Here is your encrypted key가 있었는데 삭제시켜줘야함. 공백이 하나 포함되어있는데 공백도 제거

여기서 잘 지워줘야 플래그 값이 나옴



그리고 다시 ./random_flag하면 키가 나오는 걸 알 수 있다.


이 방법 이외에도 

flag * 0 = random

0 * random = flag

0의 개수를 조절하여 맞추는 방법도 있다.



※ random_flag 값을 key값으로 치환할 때는 앞에 Here is your encrypted key를 없애 줄 필요가 없다.

random_flag 값을 flag로 치환 할 때만 Here is your encrypted key를 없애준다.


'CTF' 카테고리의 다른 글

2016년 Power of XX 예선문제 random_flag[100] Write up  (0) 2016.10.12

+ Recent posts