TSG CTF 2019 writeup

5933 단어 CTF2019writeup
TSGCTF2019의 답변
floret으로 두 사람이 참여
Warmup과 감상 입력 문제(?) 포함해 5문해해 14위 870pts였습니다

[Forensic]Obliterated File



Point: 92 (90solves)

문제문



※ 이 문제는 비상정적인 해법이 있어, "Obliterated File Again"로 수정되었습니다. 원래 문제 문장은 다음과 같습니다.

TSG CTF를 향해 문제를 만들고 있었습니다만, 어느새 실수로 flag의 파일을 커밋하고 있었던 것을 깨달았다! 어쨌든, 구글 선생님에게 묻고 다음과 같은 명령을 쳤습니다. 잘 모르겠지만 어디 있어도 괜찮아...?
$ git filter-branch --index-filter "git rm -f --ignore-unmatch problem/flag" --prune-empty -- --all$ git reflog expire --expire=now --all$ git gc --aggressive --prune=now

해법


git log --name-status
실행하면 flag라는 수상한 이력이. . .

git reset --hard 8412
그 커밋까지 거슬러 올라간다.
ls로 확인하면 플래그라는 파일이 있으므로
file 명령으로 확인하면
$ file flag
flag: zlib compressed data

zlib 형식으로 압축되는 것 같기 때문에
파이썬으로 압축 해제
import zlib
f=open('flag',mode='rb')
zlib.decompress(f.read())

이제 flag get
TSGCTF{$_git_update-ref_-d_refs/original/refs/heads/master}

[Forensic]Obliterated File Again



Point: 178 (61solves)

문제문



아까의 명령에는 실수가 있었다는 것을 깨달았습니다. 이것으로 이번이야말로 정말로, 정말로 괜찮을 것......?
$ git filter-branch --index-filter "git rm -f --ignore-unmatch *flag" --prune-empty -- --all$ git reflog expire --expire=now --all$ git gc --aggressive --prune=now

해법



이전과 마찬가지로
git log --name-status
하지만 플래그의 로그를 찾을 수 없습니다.
기록을 지우는 방법이 강해진 것 같습니다.

git의 이력은 hash 값에 대한 포인터와 같기 때문에
hash 값 목록을 볼 수 있다면 플래그 정보
확인할 수 있다고 생각하고 조사하면
git rev-list --objects --all
에서 모든 객체의 hash 값 목록을 볼 수 있다는 것을 알았습니다.


problem/flag라는 hash 값을
git cat-file -t c1e3
에서 조사하면 blob인 것을 알았기 때문에
git cat-file -p c1e3
에서 내용을 보면 문자가 깨집니다.

이전 문제와 같을 것이라고 에스퍼
git cat-file -p c1e3 > flag
에서 내용을 다른 파일에 넣고,
import zlib
f=open('flag',mode='rb')
zlib.decompress(f.read())

Obliterated File에서 사용한 파이썬을 그대로 실행하여 flag get
TSGCTF{$_git_update-ref_-d_refs/original/refs/heads/master_S0rry_f0r_m4king_4_m1st4k3_0n_th1s_pr0bl3m}

결국 상정외의 해법은 몰랐다. . .

[스테고] 하레카제



Point: 499 (8solves)

문제문



Are you ready for next CTF?

다음 CTF를 준비하셨습니까?

해법




라는 이미지가 주어집니다.

단순히 flag가 되는 문자열의 부분의 색을 바꾸고 있을 뿐이라고 생각
파이썬 이미지 처리 라이브러리를 사용하여 이미지 변환
import cv2
filename='harekaze.jpg'
gry=cv2.imread(filename,0)
cv2.imwrite('flag.jpg',gry)

보기 힘들지만 색각 있는 사람이라면 읽을 수 있는 레벨
이제 flag get


일단
TSGCTF{UnderTheBlueSeaMermaidSwims}

감상 등



정직한 문제로 Harekaze가 가장 쉬웠습니다.
뭔가 잘못되면 지적 부탁드립니다.

참고로 한 사이트



htps : // 이 m / n k shige / ms / e b2b6f758c2707757738
htps : // / cs. py 응. rg/그럼/3/ぃb등 ry/→이 b. HTML
https://git-scm.com/book/ko/v1/Git 내부 - 유지 보수 및 데이터 복구

좋은 웹페이지 즐겨찾기