CTF/MISC

[JISCTF] Common - MISC / Python

SecurityMan 2023. 1. 19. 11:00

 

쉬운 난이도의 MISC 문제

 

MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다.

 

반응형

 

문제 설명을 읽어보면 두 파일을 비교해서 뭔가를 찾아내야 하는듯 하다.

 

주어지는 파일은 files.zip 인데

 

 

압축을 풀어보면 안에 이렇게

 

file2.txt 와 file3.txt 파일이 들어있다.

 

 

왼쪽이 file2.txt, 오른쪽이 file3.txt 의 내용이다.

 

뭔가 알수없는 문자들이 가득 쓰여있는데,

 

얼핏 보면 두 파일의 내용이 똑같은것 처럼 보인다.

 

 

리눅스에서 diff 명령어를 통해 file2.txt 와 file3.txt를 비교한 결과를 보니

 

확실히 중간에 뭔가가 다른것 같다.

 

1c1 이라고 되어있는건 각 파일의 첫번째 줄이 서로 다르다는 의미인데,

 

이건 file2.txt 와 file3.txt 의 모든 내용이 한줄로 적혀있어서 그런것이다.

(엔터가 쳐져있는것 같지만 사실은 모두 한줄이다.)

 

 

대충 눈으로 따라가면서 비교해보니

 

드문드문 글자가 다른 부분이 식별되었다.

 

뭔가 이 다른 글자들을 모으면 플래그가 될 것 같았다.

 

파이썬 스크립트로 자세히 비교해본다.

 

f1 = open("file2.txt", "rb")
f2 = open("file3.txt", "rb")

l1 = f1.readline()
l2 = f2.readline()

tmp = ''

for i in range(len(l1)):
    if l1[i] != l2[i]:
        tmp += chr(l2[i])

flag = ''

for i in range(len(tmp)-1,0,-1):
    flag += tmp[i]

print(flag)

 

코드는 이렇게 짤 수 있다.

 

f1 과 f2 변수에 file2.txt 와 file3.txt 파일을 읽어서 넣고,

 

그 내용은 각각 l1, l2에 readline 으로 읽어와 저장해준다.

 

for 문을 통해 l1과 l2 를 첫번째 글자부터 비교해 나가고,

 

만약 다른 내용이 있다면 그 내용을 tmp 변수에 저장해준 뒤

 

tmp 변수를 역으로 출력해주는 코드이다.

 

 

코드를 실행시키면

 

플래그가 출력되는것을 볼 수 있다.

반응형