CTFs

    Digital Overdose 2022 Autumn CTF WRITEUP(HHJ) - Maya went on a trip!

    Digital Overdose 2022 Autumn CTF WRITEUP(HHJ) - Maya went on a trip!

    오늘은 Digital Overdose 2022 Autumn CTF 의 maya went on a trip! 카테고리의 문제 풀이를 해볼 것이다. Category Name : Maya went on a trip! 1. Seaside 문제의 의도는 사진 파일이 있는 곳에서 제일 가까운 기차 역을 찾는 것이다. 먼저 문제의 사진파일은 아래와 같다. 이 사진 왼쪽을 보면 건물에 "DARAKHYU"라고 적혀있다. darakhyu를 구글 지도에 찾아보면 전라남도 여수시에 있는 것을 확인할 수 있다. 이 위치에서 기차역이라는 카테고리로 검색을 하면 다음과 같이 여수EXPO 역이 제일 가까운 역으로 나타난다. 따라서 flag는 DOCTF{yeosu_expo}가 된다. 2. SympoZzzium 2번째 문제의 의도는 여..

    2022 HISCON writeup - HHJ

    2022 HISCON writeup - HHJ

    HTML 삽입 미리보기할 수 없는 소스 오늘은 2022년에 한세사이버고등학교에서 실시한 ctf인 HISCON대회의 writeup을 쓸 것이다. 대회에서 8문제를 풀어서 1등을 한분과 점수는 동일하지만 더 늦게 풀어서 2등이 되었다. 1. Mic check 그냥 디스코드의 welcome탭에 플래그를 확인할 수 있다. 2. 번역기(Network) 이 문제는 어떠한 파일을 찾아서 그 파일에서 질문한 것의 정답이 flag였다. 먼저 파일을 wireshark로 열어서 object 탭을 확인해보면 다음과 같다. 10.26.104.108이라는 수상한 ip에서 통신된 파일이 있는 것을 확인할 수 있다. 위 ip로 통신된 모든 파일을 다운 받아서 살펴보았는데 1개 빼고 싹 다 가짜라는 내용의 글이 있다. 남은 1개의 내..

    제 19회 순천향대 정보보호페스티벌 후기(YISF)

    이번에 나는 순천향대 예선 11위를 하여 본선에 진출하였다. 순천향대가 물론 멀었지만 좋은 경험이 될 것 같아서 가 봤다. 먼저 일요일 10시에 대회 시작이라서 9시까지 입실을 완료해야 했다. 한 8시 50분쯤 도착하여 lan선을 연결하고 yisf대회 홈페이지로 가서 포렌식, 리버싱 파일(용량 높은 파일들)을 미리 다운로드하였다. 책상 위에는 참가증 목걸이, 물, 먹을 것 이런 식으로 있었다. 그리고 전체적으로 보면 ㄷ자 모양으로 책상이 놓여 있었다. 한 30분간 랜선 환경같이 준비를 하고, 대회 주최하시는 분(?) 연설을 듣고 사진을 찍고 대회를 시작하였다. 그리고 점심쯤에 도시락을 주었는데, 초반에는 안 먹다가 1시간 30분 정도 지나서 먹었다. 난 이번 대회에서 forensic 문제를 노렸다. 포렌..

    RaRCTF - Archer

    RaRCTF - Archer

    이번에는 archer 문제를 풀어볼 것이다. 먼저 프로그램을 실행해 보자. 프로그램을 실행했을 때는 취약점 찾기가 어렵다. 그러면 먼저 main을 decompile 해보자.(ida use) int __cdecl main(int argc, const char **argv, const char **envp) { char s[5]; // [rsp+Bh] [rbp-5h] BYREF puts("It's battle day archer! Have you got what it takes?"); printf("Answer [yes/no]: "); fflush(_bss_start); fgets(s, 5, stdin); if ( strstr(s, "no") ) { puts("Battle isn't for everyone...

    RaRCTF - ret2winrars

    RaRCTF - ret2winrars

    오늘은 ret2winrars 문제를 풀어볼 것이다. 먼저 ida로 decompile해보자.(main function) int __cdecl main(int argc, const char **argv, const char **envp) { setvbuf(_bss_start, 0LL, 2, 0LL); puts("Hello, welcome to the WinRaRs!"); printf("Please enter your WinRaR license key to get access: "); get_license(); puts("Thanks for the license :)"); return 0; } 일단은 딱히 취약점이 보이지는 않는다. 그러면 get_license를 확인해보자. __int64 get_license..

    rtl ctf - ciphers galore!

    rtl ctf - ciphers galore!

    이번에는 cipher galore 문제를 풀어보자. $&Es6a@I+v5;|`h_$)q?2Kq75w=p|%tK+)8K)K}d!b_l 위의 문자열이 encrypted cipher이다. 3가지의 crypto가 생각난다. 1. Base91 2. Ascii85 3. ROT 47 그러면 base91부터 순서대로 해보자. base91을 돌리면 아래와 같다. 어... 누가봐도 이상하게 나온것 같다. 그러면 다음으로 ascii85 decoding을 해보자. ascii 85도 아닌것 같다. 그러면 마지막으로 rot 47 decoding 해보자. 오!!! base64 encoding 문자열이 나왔다. 그러면 계속해서 base64로 디코딩 해보자. 오 이런식으로 caesar decoding 된 것 같은 문자열이 나온다. 그..

    RTL ctf - Wait, What?

    RTL ctf - Wait, What?

    오늘은 rtl ctf의 암호 문제인 wait what을 풀어 볼것이다. 먼저 encrypt string을 보자. NBY{9x175777156k5608n3x889n5nx9215n2} 위의 문자열은 vigenere cipher 또는 caesar cipher 같다. 그러면 먼저 vigenere tool 을 이용해서 decode해보자. key값을 정해야하는데 대회이름 처럼 rtl을 넣었다. 그러자 아래처럼 나왔다. 위처럼 WIN이라는 단어가 나왔다. 그래서 다시 WIN으로 vigenere decoding 했다. 위처럼 flag를 확인할 수 있다. flag : RTL{9b175777156c5608a3b889f5ab9215f2}

    redpwnCTF - secure

    redpwnCTF - secure

    이번에는 secure web문제를 풀어볼것이다 아래는 js코드이다. const crypto = require('crypto'); const express = require('express'); const db = require('better-sqlite3')('db.sqlite3'); db.exec(`DROP TABLE IF EXISTS users;`); db.exec(`CREATE TABLE users( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT );`); db.exec(`INSERT INTO users (username, password) VALUES ( '${btoa('admin')}', '${btoa(crypto.rand..