반응형

python 80

[Root Me] File - Insecure storage 1 - 암호학 / firefox_decrypt

Root Me 에서 제공하는 암호학 문제 뭔가 포렌식 쪽으로 분류되어도 상관없을듯한 문제이다. 암호를 푸는거지만 암호 관련된 지식보단 포렌식 쪽이 더 많지 않을까.. 문제는 user의 password 를 찾는것이다. 문제에서 주어지는 압축파일의 압축을 풀면 이렇게 firefox 라는 폴더를 찾을 수 있다. 폴더의 내용을 보면 .splite, key3.db 이런 파일들이 보이는 것으로 보아 firefox 브라우저를 사용할때 생성되는 각종 아티팩터들이 저장되는 폴더를 통채로 압축시켜서 업로드 한것 같다. 여기서 살펴볼 것은 signons.sqlite 파일이다. 해당 파일은 DB Browser for SQLite 이라는 도구로 내용을 확인할 수 있다. moz_logins 테이블을 확인해보면 www.root-m..

워게임/Root Me 2023.06.06

[D^3CTF] d3gif - MISC / PIL

git 파일과 관련된 스테가노그래피 문제 포렌식 느낌인데 MISC 로 분류되었다. MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다. 문제에서 주어지는 (x,y,bin).gif 파일은 이렇게 생겼다. 자세히 보면 뒷 배경의 색깔이 계속 바뀌는데 여기에 뭔가 숨겨진 메세지가 있을거라고 생각했다. 문제는 Python PIL 라이브러리를 이용해서 풀었다. PIL은 Python Imaging Library의 약자로 파이썬으로 이미지 처리를 할 수 있도록 해주는 라이브러리이다. pip install image pip install pillow 두 명령어를 이용해서 다운로드 받아주면 된다. from PIL import Image, ImageSequence path = "./gg..

CTF/MISC 2023.05.29

[angstromCTF] impossible - 암호학 / Python

암호학 두번째 문제 문제를 어이없게 풀어버려서 제대로된 풀이가 아니다. 서버에 원격접속할 수 있는 주소와 서버에서 돌아가고 있는 파이썬 코드가 주어진다. #!/usr/local/bin/python def fake_psi(a, b): return [i for i in a if i in b] def zero_encoding(x, n): ret = [] for i in range(n): if (x & 1) == 0: ret.append(x | 1) x >>= 1 return ret def one_encoding(x, n): ret = [] for i in range(n): if x & 1: ret.append(x) x >>= 1 return ret print("Supply positive x and y suc..

CTF/암호학 2023.05.24

[angstromCTF] Simon Says - MISC / Python

간단한 코딩테스트 느낌의 MISC 문제였다. MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다. 문제에서는 nc 로 접속할 수 있는 원격 서버 주소가 제공된다. 접속해보니 wombat 의 앞 세글자와 dragon 의 뒤 세글자를 합한 말이 뭐냐고 한다. 뭔소린가 싶어서 일단 avc 라고 아무거나 쳐봤는데 바로 에러가 나면서 세션이 종료되었다. 다시 들어가보니 이번엔 bear 의 앞 세글자, dragon 의 뒤 세글자를 합하라고 한다. 매번 실행할 때마다 등장하는 동물이 바뀌는가 보다. 한번 쳐볼려고 be 까지쳤는데 타임아웃이 걸려있는지 세션이 종료되었다. 이번엔 pwntool 을 이용해서 파이썬으로 코딩을 해서 실행해봤다. 코드는 마지막에 첨부한다. 출력되는 문자열에..

CTF/MISC 2023.05.18

[angstromCTF] Celeste Tunneling Association - 웹해킹 / Burp Suite

간단한 웹해킹 문제이다. 문제페이지 주소와 소스코드가 주어진다. 문제페이지에 접속하면 까만 화면에 이렇게 하얀 글씨가 써있다. 이거 외엔 별다른 기능이 없어서 소스코드를 바로 열어봤다. # run via `uvicorn app:app --port 6000` import os SECRET_SITE = b"flag.local" FLAG = os.environ['FLAG'] async def app(scope, receive, send): assert scope['type'] == 'http' headers = scope['headers'] await send({ 'type': 'http.response.start', 'status': 200, 'headers': [ [b'content-type', b'tex..

CTF/웹해킹 2023.05.15

[angstromCTF] Celeste Speedrunning Association - 웹해킹 / Python

간단한 웹해킹 문제 말 그대로 Speedrunning 해야하는 문제였다. 문제페이지에 접속하면 이런 화면이 나온다. 뭔가 순위표가 나와있는데 1등인 Old Lady 가 0 seconds 라고 나와있다. 느낌상 1등보다 빨라야 플래그를 얻을 수 있는것 같다. 안내되어있는 /play 경로로 들어가봤다. /play 로 들어가보면 Press when done! 라는 버튼이 하나 보인다. 버튼을 누르면 /submit 으로 이동하는데 이기지 못했다는 안내 문구가 나온다. /play 경로로 다시 돌아가 F12를 눌러 개발자도구를 통해 소스를 확인해봤다. 버튼을 눌렀을때 어떤 데이터가 전달되는지 봤는데 1682427392.763026 이라는 숫자가 전달되고 있었다. DCode 도구로 확인해보니 이건 현재시간을 Unix..

CTF/웹해킹 2023.05.14

[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] 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] 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
반응형