위와 같은 파일 목록을 확인 할 수 있다.
서버 정보는 위와 같았다.
파일 권한 확인
실행하였을 때
실행하였을 때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를 없애준다.
최근댓글