반응형

워게임/CTFlearn 103

[CTFlearn] Old memories - 프로그래밍 / PIL

CTFlearn에서 제공하는 프로그래밍 카테고리의 Hard 난이도 문제 이번 문제는 Hard 치고는 쉬운 편이다. 카테고리도 프로그래밍 보단 스테가노그래피에 가까운것 같다. 문제에서 주어지는 것은 1.png, 2.png 두 개의 파일이다. 이전에 블로그에서 유사한 문제를 다룬적이 있었는데 거의 그대로 하면 된다. (https://hackingstudypad.tistory.com/125) 이번 문제는 Python PIL 라이브러리를 이용해서 풀었다. PIL은 Python Imaging Library의 약자로 파이썬으로 이미지 처리를 할 수 있도록 해주는 라이브러리이다. pip install image pip install pillow 두 명령어를 이용해서 다운로드 받아주면 된다. from PIL impor..

워게임/CTFlearn 2023.08.01

[CTFlearn] Bobby Toe's iPad - 포렌식 / Stegsolve / HxD

CTFlearn에서 제공하는 Hard 난이도의 포렌식 문제 다 풀고 보면 그렇게 어렵지 않은 것 같은데 푸는데 시간이 꽤 걸렸다. 문제에서 주어지는 것은 bobbytoesipad.png 파일이다. 해당 파일을 HxD 로 열어 iend 문자열을 검색해 PNG 파일의 맨 끝으로 이동해보면 파일이 정상적으로 끝나지 않고 뒤에 데이터가 더 있는 모습이 보인다. FF D8 FF E0 로 시작하는 데이터가 있는데 이건 JPG 파일의 시그니처 이다. PNG 파일 뒤에 JPG 파일이 숨어있는 것이다. FF D8 FF E0 부터 파일의 맨 끝까지 복사한 뒤 새로만들기로 ipad.jpg 라는 이름으로 저장해줬다. 파일의 맨 처음을 보면 congrats you found me! you win an iPad! 라는 문장이 보..

워게임/CTFlearn 2023.07.12

[CTFlearn] The Keymaker - 포렌식 / JPEG / HxD

오랜만에 포스팅하는 CTFlearn의 문제 Medium 난이도의 포렌식 문제이다. 문제에서 주어지는 The-Keymaker.jpg 파일은 이렇게 생겼다. HxD를 이용해 열어보면 앞부분에 뭔가 수상한 내용들이 보인다. 보기좋게 편집하면 이렇게 생겼는데, 맨 위에 있는건 당연히 가짜 플래그이고 두번째줄부터 뭔가 Base64 인코딩된 내용이 보인다. CyberChef(https://gchq.github.io/CyberChef) 에서 Base64 디코딩을 해봤다. 두번째줄부터 네번째 줄까지는 문제에 대한 힌트였다. 내용을 보면 AES-256-CBC를 이용해 flag 를 암호화 했고, iv 로는 SOF0을, key 로는 SOS 를 사용했다고 나와있다. mmtaSHhAsK9pLMepyFDl37UTXQT0CMltZ..

워게임/CTFlearn 2023.07.10

[CTFlearn] Bite-code - 리버싱 / Python

CTFlearn의 아흔한번째 문제 이번엔 Medium 난이도의 리버싱 문제이다. 뒤로갈수록 뭔가 앞쪽에 있던 문제들이랑 난이도 책정 기준이 다른것 같다. 문제 설명을 읽어보면 checkNum 이 true 를 리턴하게 하는 input 이 뭐냐고 물어본다. public static boolean checkNum(int); descriptor: (I)Z flags: ACC_PUBLIC, ACC_STATIC Code: stack=2, locals=3, args_size=1 0: iload_0 1: iconst_3 2: ishl 3: istore_1 4: iload_0 5: ldc #2 // int 525024598 7: ixor 8: istore_2 9: iload_1 10: iload_2 11: ixor 12..

워게임/CTFlearn 2023.05.10

[CTFlearn] Riyadh - 리버싱 / IDA / Pwndbg

CTFlearn 의 아흔번째 문제 이번엔 10점짜리 Easy 난이도 리버싱 문제인데 아무래도 배점이 잘못된것 같다. 막 어렵진 않지만 그래도 10점은 아닌듯.. 일단 문제에서 주어지는 것은 readme, Riyadh, source.zip.enc 파일이다. 나머진 필요없고 문제풀때는 Riyadh 파일만 있으면 된다. 바로 IDA 로 열어서 F5를 눌러 main 함수의 수도코드를 살펴보았다. 일단 세가지 정도를 검증하고 있다. argc 가 1인지, buffer 와 v4 가 같은지, strlen 이 30 인지 세 가지를 비교하고 그거에 따라 각각 Msg2, Msg4, Msg5 가 실행된다. Msg 함수는 1 부터 7 까지 있는데 각각의 Msg 함수들을 보면 이렇게 xormask 값과 어떤 값을 XOR 하는것으..

워게임/CTFlearn 2023.04.27

[CTFlearn] Brute Force is Fun! - 포렌식 / HxD / Python

CTFlearn의 여든아홉번째 문제 계속해서 이어지는 Hard 난이도 문제이다.. 이상하게 배점이 높은데 사실 그렇게 어렵진 않다. 문제에서 주어지는 것은 legotroopers.jpg 파일이다. 해당 파일을 HxD에서 열어 중간쯤으로 내려가봤다. JPG 파일은 항상 FF D9 라는 값으로 끝난다. 파일에서 FF D9 값이 나오면, 그 뒤에는 아무런 값이 없어야 정상이다. 그런데 이 파일은 FF D9 다음에 50 4B 03 04 로 시작하는 데이터가 오고있는것을 볼 수 있다. 이렇게 50 4B 03 04 로 시작하는 파일은 ZIP 확장자를 가지는 파일이다. 이런것을 파일 시그니처 라고 한다. 50 4B 03 04 부터 파일의 끝까지 추출해서 test.zip 으로 저장했다. 압축을 풀려고 봤더니 비밀번호가..

워게임/CTFlearn 2023.04.23

[CTFlearn] Skynet Is (Almost) Taking Over - 암호학 / RsaCtfTool

CTFlearn 의 여든여덟번째 문제 4연속 Hard 난이도의 문제가 나와서 살짝 쫄았는데 이번 문제는 아주 쉽게 풀 수 있었다. 문제 설명이 아주 장황하다. 양자 컴퓨팅 어쩌고 하면서 나오는데 사실 이 의도를 잘 모르겠다. RSA 에 관련한 문제인데 RSA는 지금까지도 아주 많이 사용하는 공개키 알고리즘의 이름이다. 개발자인 Rivest, Shamir, Adleman 세명의 이름 앞글자를 따서 RSA 라고 이름을 붙혔다. 엄청나게 큰 숫자일수록 소인수분해가 어렵다는것에 착안해서 설계되었다. RSA의 원리는 아래와 같다. 1. 두 소수 p, q를 준비한다. 2. p-1, q-1과 각각 서로소(1외에는 공약수가 없는 수)인 정수 e를 준비한다. 3. ed를 (p-1)(q-1)으로 나눈 나머지가 1의 되도록..

워게임/CTFlearn 2023.04.20

[CTFlearn] Music To My Ears - 포렌식 / faad

CTFlearn의 여든 일곱번째 문제 계속해서 Hard 난이도의 문제가 나와서 부담스러워 지기 시작했다. 이번엔 포렌식 문제이다. 문제에서 주어지는 것은 hereisyourflag.m4a 파일이다. 파일을 클릭해서 재생시켜보려 했더니 이런 문구가 떴다. 파일이 온전하지 않은 상태인듯 하다. 일단 HxD로 열어봤다. 아직까진 뭐가 문제인지 모른다. https://www.file-recovery.com/m4a-signature-format.htm MPEG4 Audio Signature Format: M4A,M4B,M4P Documentation and Recovery Examples MPEG-4 Part 14 Audio (M4A,M4B,M4P) Format & Recovery Example M4A is a ..

워게임/CTFlearn 2023.04.15

[CTFlearn] Python Reversal - 프로그래밍

CTFlearn의 여든 여섯번째 문제 지난 문제에 이어서 프로그래밍 카테고리의 Hard 난이도 문제이다. (https://hackingstudypad.tistory.com/469) 이번엔 제공되는 언어가 파이썬이다. import base64 as rtfd import webbrowser import time def mikeSwift(cre): sto = [] gre = "" for i in cre: sto.append(i+str(len(i))) sto.append("h4ck" + i) for i in sto: gre+=i return gre def prompt(): return bytes(input("Welcome to the loading dock. What is the password?\t"), 'u..

워게임/CTFlearn 2023.04.12

[CTFlearn] Is it the Flag? (JAVA) - 프로그래밍 / Python

CTFlearn의 여든 다섯번째 문제 이번엔 Hard 난이도의 프로그래밍 문제이다. 갈수록 어려운 문제가 나와서 이젠 못풀수도 있겠다 싶다. 문제 설명을 읽어보면 플래그는 6글자의 alphanumeric characters 라고 한다. alphanumeric 은 a ~ z, 0 ~ 9 까지의 문자열을 모두 합한걸 의미한다. public class IsItTheFlag { public static boolean isFlag(String str) { return str.hashCode() == 1471587914 && str.toLowerCase().hashCode() == 1472541258; } public static void main(String[] args) { String flag = "-----..

워게임/CTFlearn 2023.04.07
반응형