본문 바로가기

CTF/INCOGNITO 20217

[INCOGNITO CTF] EZ_steganography 스테가노그래피 문제입니다. 문제에서 주어진 파일은 jfif 파일로 고양이 사진입니다. jfif 파일을 메모장으로 열고 INCO를 검색하면 INCO{457a5f53746567} 문자열을 찾을 수 있습니다. 아스키코드로 변환하면 플래그를 획득할 수 있습니다. INCO{Ez_Steg} 2021. 8. 29.
[INCOGNITO CTF] 코로나 바이러스 대응 긴급조회 zip파일을 압축을 풀면 hwp 파일이 하나 존재한다. 특별히 힌트가 될만한 내용은 보이지 않는다. 모든 문서형 파일은 stroage 파일 형식을 사용하기 때문에 zip 파일로 확장자를 바꾸어 열어볼 수 있다. 확장자를 zip으로 변경하고 압축을 풀면 BinData에 ps 파일이 있다. ps 파일은 Post Script 파일로 최근 악성파일의 유행하는 형태로 한글 파일 내에 EPS(Encapsulated PostScript)를 삽입하여 동작시키는 형태이다. 따라서 ps 파일을 HxD 에디터를 사용해서 열어준다. ps파일을 HxD로 열면 Decoded text가 모두 16진수로 채워져 있는데 누가 봐도 의도적으로 데이터가 삽입되어 있음을 짐작할 수 있다. 데이터를 메모장에 복사하고 HxD 새 파일을 생성하.. 2021. 8. 28.
[INCOGNITO CTF] Calculator 시스템해킹 문제 서버에 접속하면 위와 같이 입력창에 수학에 사용되는 함수를 입력할 수 있습니다. 예를 들어 sin을 입력하면 이라는 문구가 출력되는데 built-in-function은 내장함수를 의미하고 이를 통해 서버는 파이썬으로 작성되었음을 알 수 있다. 따라서 파이썬에서 쉘 스크립트를 작동하기 위해서는 os 모듈의 system이라는 함수를 사용한다. 서버 프로그램에는 os 모듈이 import되어있지 않을 가능성이 높으므로 "__import__('os').system('ls')" 입력하면 위와 같이 system 함수는 사용할 수 없다고 출력됩니다. 따라서 파이썬에서 쉘 스크립트를 실행할 수 있는 방법이 하나 더 있는데 subprocess를 이용하는 것입니다. 이번에는 subprocess 모듈을 이용하.. 2021. 8. 28.
[INCOGNITO CTF] inco_hack.png 메모장에 hidden 검색하면 base64로 암호화된 플래그를 획득할 수 있습니다. 2021. 8. 28.
[INCOGNITO CTF] Deconstructionism 파일을 열면 아래와 같이 5가지 숫자가 정렬되어있다. (0,0,195,195,195) (0,1,195,195,195) (0,2,195,195,195) (0,3,195,195,195) (0,4,195,195,195) (0,5,195,195,195) (0,6,195,195,195) (0,7,195,195,195) (0,8,195,195,195) (0,9,195,195,195) (0,10,195,195,195) (0,11,195,195,195) 해당 파일의 숫자는 (x좌표, y좌표, Red, Green, Blue)으로 텍스트 파일을 다시 이미지 파일로 만들어야합니다. 코드는 아래와 같습니다. blank.png는 구글에서 blank.png 중에 가로 길이가 500이상인 것을 다운로드 받아서 사용했습니다. imp.. 2021. 8. 28.
[INCOGNITO CTF] hex carving 문제파일을 실행하면 위 그림처럼 고양이 사진이 출력된다. HxD로 열어서 zip 파일의 시그니처인 504b0304를 검색하면 파일안에서 찾을 수 있다. 따라서 해당 파일안에는 zip 파일이 숨어있다는 것을 알 수 있다. zip 파일 구조는 아래와 같다. 위 그림을 참조하여 파일의 시작과 끝을 찾으면 시작은 1aac 끝은 231c입니다. 그대로 복사해서 zip 파일로 만들어 압축을 해제하면 아래 gif 파일이 있습니다. 해당 파일을 위와 같이 ezgif 사이트에서 프레임 단위로 자를 수 있습니다. 숫자들을 아스키코드로 변환하면 아래 플래그를 얻을 수 있습니다. INCO{3Z_C4rving} 2021. 8. 27.
[INCOGNITO CTF] Do you know Hashes 문제 서버에 접속하면 위와 같이 key 값을 채워넣어서 조건문을 모두 우회해야한다. 조건은 md5, crc32, md4 알고리즘으로 해시값을 만들어서 비교한 결과가 같아야합니다. md5는 결과가 32바이트이고 crc32는 결과가 8바이트이기 때문에 길이부터 다르므로 문자열 비교로는 같을 수가 없습니다. 따라서 정수를 비교하는 방식으로 가야합니다. 예를 들어 php에서 0='0'은 true 입니다. 문자열과 정수형을 비교를 하면 문자열에 숫자만 있는 경우 문자열을 정수로 변환한 후 비교를 하기 때문에 0='0'이 true가 됩니다. https://www.whitehatsec.com/blog/magic-hashes/ 여기서 사용할 수 있는 개념이 Magic Hash 입니다. Magic Hash란 해시 값이 .. 2021. 8. 27.