CTF하면서 암호학이 점점 재밌어지는거 같다.

 

[ws1]

와이어 샤크로 열어서 패킷 확인 해보면 텍스트로 찾을수 있음.

 

ws1 packet

 

[ws2]

이번엔 와이어샤크에서 패킷을 보면 이미지 전송에대한 패킷을 확인할수 있는데

추출하면 flag가 나옴.

ws2 packet

 

[ws3]

패킷을 확인하다보면 데이터가 큰것을 찾을수 있는데

git pack? 에 대한 데이터를 확인할 수 있는데 이후에 뭘 해야되는지 몰라서 못풀었었다.

깃허브에서 뭘 이용해야 되는줄 알았는데 그 파일을 binwalk로 추출하면 특정 파일들이 생기는데

hxd로 확인해보면 이미지 파일인것을 확인할 수 있다. 확장자를 이미지로 바꾸면 flag가 보인다.

 

ws3 packet
git pack파일을  binwalk로 추출

[keysar]

문제를 보자마자 케이사르 문제겠거니 하고 여러 복호화 사이트중 키 입력이 있는 페이지에서

문제에 주어진 키와 암호문을 입력하면 flag로 복호화 성공.

 

keysar 복호화 사이트

[magic word]

웹 페이지에 접속하면 give flag라는 화면이 나온다.

해당 페이지에 스크립트를 확인해보면, /flag?msg변수에 "please give flag" 특정 값을 전달해주는 것 같다.

magic word sovle page

값을 get으로 전달해주면 웹 페이지에는 뭔가 flag치고는 짧은 텍스트가 보인다.

개발자도구를 이용해서 네트워크의 응답값을 확인해보면 크롬에서 출력하지못한 텍스트를 확인 할 수 있다.

 

암호화된 flag값 확인

해당 텍스트를 다시 복호화 해야되는데,

위에 암호화하는 코드를 보니 암호화 하는게 xor을 사용하는 거라서

다시 0xf로 xor해주면 원래 값이 나오게 된다. 

flag get

[wacko images]

enc 파일을 보면 tv송신 끊켰을때 나오는 화면같은 이미지가 보인다

wacko images solved
enc.png

해당 파일을 어떻게 암호화 했는지 python 코드를 보면

key를 이용해서 i번째 pixel에 key를 곱하고 251로 나눈 나머지(mod)를 i번째 pixel로 변경해서

flag.png가 enc.png로 변경된다.

 

롸업 작성하면서 풀었던 코드를 다시 보니 말도안되는 이상한식으로 풀었다..

이렇게 풀어도 대강 플래그 이미지는 보였....

 

 

그래도 역으로 계산하는방법이 있을거라고 생각하고 ctf 끝나고 찾아보니 

mod n 에 대한 곱셈의 역원을 구할때 사용하는 invert 함수를 이용해서

key 대신 역원을 사용해서 곱해주면 정확한 이미지가 복원된다

 

https://github.com/saurav3199/CTF-writeups/blob/master/AngstromCTF'20/README.md#wacko-images-

 

[msd]

*빨리 정리하자...

................

 

+ Recent posts