이번에 LG U+에서 열린 CTF를 참가해서 본선까지 갔다왔다예선은 어찌저찌 좋은 순위로 마감쳐서 본선에 갔었는데 본선에서 탈탈 털려버렸다....잠시 한탄을 하자면 본선에서 웹 3문제가 나왔는데 젤 어려운 문제를 처음부터 잡아서 나머지 웹이나 Misc 문제를 별로 못본게 너무너무 아쉽다.진짜 0솔짜리 하나만 풀었어도 순위권 가는거였는데..ㅠㅠ뭐 아직 실력이 부족한 탓이겠지...예선예선은 온라인으로 09:00~18:00까지 진행했다.예선 문제 Writeup은 Writeup제출 당시 적은걸로 대체하겠다.저거 Writeup에서 martini 문제풀이 부분에 session cookie값이 같으면 secret값도 같다고 되어있는데다시 생각해보니깐 그건 아닌거 같고 걍 리모트랑 문제파일 secret값을 같은거 써서..
Predic's Study BLOG
일본에서 주최한 SECCON CTF를 참여했다.그런데 난이도가 생각보다 너무 어려워서 좀 당황스러웠지만 재밌긴 했다.일단 Web문제에서 유심히 본건 총 3문제이다.1. Trillion Bankimport fastify from 'fastify';import crypto from 'node:crypto';import fs from 'node:fs/promises';import db from './db.js';const FLAG = process.env.FLAG ?? console.log('No flag') ?? process.exit(1);const TRILLION = 1_000_000_000_000;const app = fastify();app.register(await import('@fastify/j..
이 문제만 이틀동안 봤는데도 해결을 못했다 ㅠㅠ끝나고 올라온 writeup을 바탕으로 해결한 과정을 적어놓겠다. 일단 이 문제는 wasm(웹 어셈블리)문제이다.문제 접속하면 rust를 컴파일하라고 하고 js파일과 wasm파일 두개 올라온게 끝이다.일단 rust를 컴파일해서 wasm 파일을 만들면은 wasm파일을 import하기 위해 js와 같이 써야한다.요 부분이 그부분이다. 그다음 wasm파일을 디컴파일도 해보고 별짓을 다했는데 해결을 못했다.writeup을 보니 js파일에 state를 지정하는 부분이 있었는데 요 부분이 다시보니 의심스럽게 생기긴 했다. imports.wbg.__wbg_state_3308b4f9bac86286 = function(arg0) { const ret = g..
1. Cat Raterfrom flask import Flask, render_template, session, request, redirect, flashimport subprocessimport secretsimport randomimport redisimport uuidimport osimport reapp = Flask(__name__)app.secret_key = secrets.token_bytes(32)flag = os.environ.get('FLAG','ASIS{test-flag}')rds = redis.Redis(host='redis', port=6379)uuidReg = re.compile(r'^[\da-f]{8}-([\da-f]{4}-){3}[\da-f]{12}$', re.IGNOREC..
간단하게 작성하겠다. #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1);}void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30);}int main(int argc, char *argv[]) { char buf[0x80]; initialize(); printf("buf = (%p)\n", buf); scanf("%141s", buf); return 0;}0x70 + ..
잠금되어있는 writeup들이 있습니다.이전 포스팅된 글들은 비밀번호가 랜덤값으로 설정되어있는데이제부터 잠금 비밀번호는 아래 3가지 중 한가지로 설정해 놓겠습니다.1. FLAG 앞 10자리2. FLAG 포맷 이후 10자리 (ex. 'FLAG{' 문자 다음 10자리) - 웬만하면 요걸로 설정예정3. 그냥 FLAG값 혹시 잠금된 writeup중에 궁금한 점이나 힌트 원하시는 분들은 아래 연락처로 연락주시면 답변드리겠습니다. Mail : cmk0487@naver.comDiscord : kmc0487
처음으로 참가해본 Sekai CTF인데 처음 접속했을때 ui가 남달라서 너무 재밌게 풀었다.문제난이도는 지금 실력에선 아직 좀 힘들었던것 같다.일단 내가 푼 문제들 writeup을 올리겠다.1. Tagless 말그대로 Tag를 못쓰는 문제이다. 저 message 부분에 글을쓰면 innerHTML로 값이 들어가 XSS취약점이 터진다.그런데 app.js 코드를 보면은 왜 Tag를 못쓰는지 알 수 있다.function sanitizeInput(str) { str = str.replace(//igm, '').replace(//igm, '').replace(/.*/igm, ''); return str;}꺽쇠로 열고 닫힌 부분의 값을 전부 삭제하는 코드이다. 이부분은 가볍게 bypass할 수 있는데 그..
이번 CCE 예선에서 solver가 0명인 문제이다나도 한 두시간? 정도 잡아서 풀어봤는데 첫번째 필터링조차 우회하지 못하고 포기했다....끝나고 Writeup이 올라왔길래 한번 정리해서 작성해본다.// admin_login.phpquery($query); $data = mysqli_fetch_array($result); } catch(Exception $e) { } isFirstLoginAttempt(); if (isset($data) && $data[0] === bin2hex($_POST["username"]) && $data[1] === bin2hex($_POST["password"]) && !$_SESSION['first_att..
첫 CCE 대회였는데 하필 여행일정에 대회날이 겹쳐서 차에서 대충 몇문제 풀었다... 대충 본문제는 네문제였고 그중 한문제는 좀 복잡해서 따로 공부좀 하고 Writeup을 올리겠다. 1. OSJarvis자바로 짜여진 웹인데 활성화 되어있는 기능은 파일업로드 한가지 뿐이었다.파일 업로드 코드는 다음과 같다.public String execute() throws Exception { if (uploadFileName != null) { try { String uploadDirectory = System.getProperty("user.dir") + "/uploads/"; File destFile = new File(uplo..