[CTF] TokyoWesternsCTF2020

Mask(misc)

レ(゚∀゚;)ヘ=З=З=З 2023. 12. 21. 10:32
728x90

주어진 부분

192.168.55.86/255.255.255.0
192.168.80.198/255.255.255.128
192.168.1.228/255.255.255.128
192.168.90.68/255.255.254.0
192.168.8.214/255.255.255.128
192.168.5.197/255.255.255.128
192.168.71.90/255.255.255.0
192.168.62.55/255.255.255.192
192.168.78.209/255.255.255.128
192.168.76.216/255.255.255.128
192.168.91.202/255.255.255.128
192.168.93.108/255.255.255.0
192.168.74.76/255.255.254.0
192.168.10.88/255.255.254.0
192.168.82.236/255.255.255.128
192.168.13.246/255.255.255.128
192.168.99.228/255.255.255.128
192.168.68.83/255.255.252.0
192.168.23.113/255.255.255.192
192.168.52.113/255.255.255.192
192.168.69.99/255.255.255.0
192.168.19.114/255.255.255.192
192.168.53.236/255.255.255.128
192.168.90.117/255.255.254.0
192.168.35.90/255.255.255.0
192.168.91.121/255.255.255.0
192.168.48.49/255.255.255.192
192.168.27.104/255.255.255.0
192.168.98.204/255.255.255.128
192.168.93.87/255.255.255.0
192.168.44.113/255.255.255.192
192.168.40.104/255.255.248.0
192.168.25.227/255.255.255.128
192.168.57.50/255.255.255.192
192.168.97.115/255.255.255.0
192.168.30.47/255.255.255.192
192.168.10.102/255.255.254.0
192.168.51.209/255.255.255.128
192.168.82.125/255.255.255.192
192.168.72.125/255.255.255.192

 

1)

문제에서 ip/ 서브넷 마스크 형태로 주어진 

192.168.55.86/255.255.255.0
192.168.80.198/255.255.255.128
192.168.1.228/255.255.255.128
192.168.90.68/255.255.254.0
192.168.8.214/255.255.255.128
192.168.5.197/255.255.255.128
192.168.71.90/255.255.255.0
192.168.62.55/255.255.255.192
192.168.78.209/255.255.255.128
192.168.76.216/255.255.255.128
192.168.91.202/255.255.255.128
192.168.93.108/255.255.255.0
192.168.74.76/255.255.254.0
192.168.10.88/255.255.254.0
192.168.82.236/255.255.255.128
192.168.13.246/255.255.255.128
192.168.99.228/255.255.255.128
192.168.68.83/255.255.252.0
192.168.23.113/255.255.255.192
192.168.52.113/255.255.255.192
192.168.69.99/255.255.255.0
192.168.19.114/255.255.255.192
192.168.53.236/255.255.255.128
192.168.90.117/255.255.254.0
192.168.35.90/255.255.255.0
192.168.91.121/255.255.255.0
192.168.48.49/255.255.255.192
192.168.27.104/255.255.255.0
192.168.98.204/255.255.255.128
192.168.93.87/255.255.255.0
192.168.44.113/255.255.255.192
192.168.40.104/255.255.248.0
192.168.25.227/255.255.255.128
192.168.57.50/255.255.255.192
192.168.97.115/255.255.255.0
192.168.30.47/255.255.255.192
192.168.10.102/255.255.254.0
192.168.51.209/255.255.255.128
192.168.82.125/255.255.255.192
192.168.72.125/255.255.255.192

 

에서 서브넷 부분을 문자로 변환을 해주기 위해 파이썬을 이용하여 “”” ”””으로 묶어 문자열로 만들어주었고 이 값을 P에 넣었다.

 

생성 코드 (solve.py)

P = """
192.168.55.86/255.255.255.0
192.168.80.198/255.255.255.128
192.168.1.228/255.255.255.128
192.168.90.68/255.255.254.0
192.168.8.214/255.255.255.128
192.168.5.197/255.255.255.128
192.168.71.90/255.255.255.0
192.168.62.55/255.255.255.192
192.168.78.209/255.255.255.128
192.168.76.216/255.255.255.128
192.168.91.202/255.255.255.128
192.168.93.108/255.255.255.0
192.168.74.76/255.255.254.0
192.168.10.88/255.255.254.0
192.168.82.236/255.255.255.128
192.168.13.246/255.255.255.128
192.168.99.228/255.255.255.128
192.168.68.83/255.255.252.0
192.168.23.113/255.255.255.192
192.168.52.113/255.255.255.192
192.168.69.99/255.255.255.0
192.168.19.114/255.255.255.192
192.168.53.236/255.255.255.128
192.168.90.117/255.255.254.0
192.168.35.90/255.255.255.0
192.168.91.121/255.255.255.0
192.168.48.49/255.255.255.192
192.168.27.104/255.255.255.0
192.168.98.204/255.255.255.128
192.168.93.87/255.255.255.0
192.168.44.113/255.255.255.192
192.168.40.104/255.255.248.0
192.168.25.227/255.255.255.128
192.168.57.50/255.255.255.192
192.168.97.115/255.255.255.0
192.168.30.47/255.255.255.192
192.168.10.102/255.255.254.0
192.168.51.209/255.255.255.128
192.168.82.125/255.255.255.192
192.168.72.125/255.255.255.192
"""

P = P.split("\n")[1:-1]
ans = ""
for p in P:
    a, m = p.split("/")
    a = int(a.split(".")[-1])
    m = int(m.split(".")[-1])
    ans += chr(a&~m)
    
print(ans)

 

2)

문자열을 나누어주는 함수인 split을 통해 \n을 기준으로 문자열을 나누어 다시 P에 넣어준다.

그리고 나서 반복을 하며 P를 /을 기준으로 다시 한번 나누어준다.(split을 통해) 그렇게 되면 ip부분이 a에 들어가고 서브넷 마스크 부분이 int 형태로 들어가게 된다.

여기서 a와 m은 아스키 코드를 통해 인코딩 된 값으로 되어있다. 

이것을 다시 디코딩하기 위해 아스키 코드 값을 입력받아 그 코드에 해당하는 문자를 출력하는 함수인 chr에 그리고 2진보수로 바꾼 m(~m)을 넣어준다.

chr를 통해 나온 값들은 공백이었던 ans에 문자열 연산을 통해 문자열로 만들어진다.

3) 생성한 solve.py 파일을 실행하면 

이라는 결과가 나온다. 이 값은 인코딩된 값이기 때문에 디코딩을 해줘야지 원하는 Flag값을 얻을 수 있다.

4)

https://www.convertstring.com/ko/EncodeDecode/Base64Decode 사이트를 통해 얻은 값을 디코딩하였더니 원하는 FLAG값인 TWCTF{Are-you-using-a-mask?}가 나왔다.

5)

 

 

 

'[CTF] TokyoWesternsCTF2020' 카테고리의 다른 글

urlcheck v1(webhacking)  (0) 2023.12.21
Easy_hash(crypto)  (0) 2023.12.21