# CTF

[심화스터디] 1주차
인프런 인증 꽤 유익한 내용이었다. 나중에 메모리 포렌식 할때도 이해도 조금 높아질듯 기초도구 : FTK Imager 디스크 마운트: 물리적인 디스크 공간을 특정 위치의 디렉토리에 연결해 주는 것 메모리 덤프: 프로세스의 메모리를 정해진 덤프 포맷에 따라 기록한 파일 Suninatas 14번 문제 https://velog.io/@vina1601/DreamHack-CTF-4%EC%A3%BC%EC%B0%A8

[CyKor 23-2 Recruiting CTF] Simple RSA
동아리 내 CTF에서 처음으로 문제를 출제해보았다. (개인적으로 문제를 꽤 잘 낸 것 같다.😙😙) chall 생각만 잘하면 간단한 수식을 통해 $q$를 구할 수 있다. 그 과정은 다음과 같다. $$ d = n - 4q$$ $$ en = e(d+4q)≡1+4eq \ \ (mod \ (p-1)(q-1))$$ $$ ∴en ≡ 1 + 4e \ \ (mod \ (q-1))$$ $$ 임의의 \ m에 \ 대하여 \ m^{en} ≡ m^{1+4e} \ \ (mod \ q) $$ $$ ∴ gcd(m^{en}-m^{1+4e}, n) = q$$ exploit code CyKor{w4s1t3n0ught05timu1a7eyOurbrAin?} 솔버들에게 박

[csawctf2023]Smug-Dino write up
문제 정보 Don't you know it's wrong to smuggle dinosaurs... and other things? 문제 웹페이지가 나오는데 home, hint, flag?가 있다. 분석 일단은 Hint라고 적힌 곳을 누르면 주소가 hint로 넘어간다. hint 페이지를 보면 server 이름과 버전을 알려주면 힌트를 준다고 한다. 서버 이

이번주에 푼 문제
1. [WHITEHAT2023] discrete_log chall $p$를 입력받고, $g$와 $g^x (mod \ p)$를 준다. (77번) 단, $q \ | \ p-1$인 1000비트 이상의 소수 $q$가 있어야 하며, $p$는 1024비트를 넘길 수 없다. 따라서, 남은 24비트를 77번 모아서 crt를 하면 충분하다. (flag는 1024비트 정도이므로 넉넉하게 구할 수 있다.) 처음엔 sage의 discrete_log함수를 썼는데, 12비트 정도의 소수에 대하여는 직접 브포하는게 더 빨라서 직접 구현했다. exploit code whitehat2023{789f4970bfceac553bffbc5633993fd169b2d3f2c3c830bde45e673d4f20c6de160751eb232872fe4925a68f75c2dd866d0d592a01} 2. [SECCON CTF 2023] RSA 4.0 chall

Quotient Ring and isomorphism
최근 quotient ring과 isomorphism을 활용하는 문제를 꽤 접했는데, 신기하기도 하고 흥미로워서 좀 더 공부해 보았다. 꽤나 원초적인 수학적 내용이 있는데, sage를 사용할 때 뭔지 몰랐던 부분들을 좀 더 명확히 하고, 수학도 공부할 겸 용어 정리를 먼저 하겠다. Term *군, 환, 체와 같은 매우 원론적인 용어는 나중에 따로 공부하자.. >아이디얼(ideal) : $I$가 환 $R$의 부분환(subring)이라고 하자. 다음과 같이 ideal을 정의할 수 있다. -만약 모든 $a ∈ I, r ∈ R$에 대하여 $ra ∈ I$가 성립하면, $I$를 $R$의 left ideal이라 한다. $I$는 뺄셈에 대하여 닫혀 있고, 동시에 $R$의 원소를 왼쪽에서 곱하는 것에 닫혀 있다. -right ideal 또한 같은 방법으로 정의된다. -left ideal이면서 right ideal이면 two-sided ideal(또는 ideal)이다. 즉, 임의의

[DownUnder CTF 2023] apbq-rsa-ii
대회 중에는 못 풀었지만, 상당히 깔끔한 풀이가 있어서 적어본다. chall 312bit 크기의 a, b에 대하여 ap+bq 3개가 주어진다. 주어진 hints를 $h1, h2, h3$라고 하면 $$ s1h1+s2h2+s3+h3=0$$ 이 되는 $s1, s2, s3$를 LLL로 찾는다면 $$ (a1s1+a2s2+a3s3)p + (b1s1+b2s2+b3s3)q = 0$$ 위 식을 만족하게 된다. 여기서 p, q는 서로소이므로 p와 q의 계수는 0이다. 따라서 $s1, s2, s3$에 대하여 LLL을 토해 $a1, a2, a3$를 찾아낼 수 있다. 그 이후로는 $gcd(h1a2-h2a1, n)$ 로 $p$를 leak할 수 있다. exploit code (sage) DUCTF{0rthol4tt1c31safunandgr34tt3chn1quef0rthet00lbox!} *전체적인 문제
[nullcon HackIM 2023] Curvy Decryptor1, 2
cryptohack을 통해 웬만한 ECC attack은 공부했었는데 새로운 공격을 이용한 문제가 있어서 적어본다. chall situation $$ P = a*G$$ $$ B = b*G$$ $$ c = m + pubkey * b = m + a * b * G$$ $G$, $P$, $B$, $c$ 가 주어졌고, $a$, $b$는 random generate된 상황 decrypt 함수 → $B$, $c$ 를 입력하면 $c - a*B$ 를 반환 problem1 : recovering m $m$을 구하는 것이 첫 번째 문제이다. 주어진 $B$, $c$ 를 그대로 decrypt함수에 넣으면 if문에 걸려서 이 부분만 우회해주면 된다. $c$에 $G$를 더해서 send하면 if문을 우회하고, $m+G$를 반환 받는다. 따라서 $G$를 빼주면 $m$을 구할 수 있다. ENO{ElGam4l1smult1pl1cativ3}

CTF Forensic
오늘의 문제 오랜만에 ctf, 그것도 포렌식 문제를 풀어본다. 작업파일들이 모두 삭제된 원인을 찾기 위해 메모리 포렌식을 하는 문제이다. 메모리 덤프파일 분석 -> kali linux에서 volatility3를 이용해서 풀어보자. 키 형식으로 보건데, 어느 프로세스에서 문제가 발생하여 모두 삭제되었고, 원인인 프로세스를 찾으면 해결되는 문제인 듯 하다. 칼리 리눅스를 켜서 volatility3을 실행시켜 보았다. 
CTF write up(6)
pwnable.kr 1. Passcode 문제를 보니 c코드를 이용하는 듯하다다. 파일을 확인해 봤는데 passcode.c 파일이 있어서 열어보았다. 위와 같은 코드를 확인할 수 있다. 코드를 분석해보니 먼저 이름을 입력받고 passcode를 두개 입력받는데 각각 338150, 13371337일 경우 flag를 확인할 수 있다. 그런데 login 함수의 scanf 에서 passcode1과 passcode2 앞에 '&'기호가 빠진 것을 확인할 수 있다. 따라서 passcode1과 passcode2에 값을

CTF-Forensic
Who's Notebook? xcz라는 사이트에서 포렌식 문제를 풀어보았다. 일단 파일을 다운받은 후, hxd로 파일을 열어보았다. ADSEGMENTEDFILE이라는 문자열이 의미심장하다. file이 여러개로 나뉘어져 있다는 소리인가...? 느낌이 메모리 포렌식 문제인것 같아 ftk로 열어보려고 했으나, 열리지 않는다. 구글링을 통해(링크텍스트)ADSEGMENTEDFILE이 확장자 AD1 을 가지는 파일 형식이라는 것을
드림핵 Forensic CTF
sleepingshark 와이어샤크를 이용한 네트워크 포렌식 문제이다. 압축파일을 다운받아서 해제하면 pcap 파일이 나오는데 pcap 파일을 열어서 패킷을 분석해 보자. 저 SELECT가 적혀 있는 패킷으로 가 보자. flag라는 글자를 발견할 수 있다. 저 문자열을 복사해서 url decode를 해 보면 
MD to pdf
markdown to pdf 참고 유튜브 - https://www.youtube.com/watch?v=QVaf4DMYPFc odyssey CTF에 참여했다 문제가 어마어마하게 어렵다 가장 쉬운 web문제부터 도전했다 가운데 textarea에 markdown을 넣어주면 pdf로 변환해주는 기능이다 지금 작성하는 velog도 markdown으로 작성된다 Markdown to PDF injection 위 유튜브 설명을 보면 markdown을 pdf로 변환하는 과정에서 RCE가 발생하는 취약점이 있다고 한다 </

CTF - Forensic
Windows Search 이 기회에 드림핵에 있는 포렌식 문제를 모두 풀어볼려고 한다. 일단 파일을 다운받자. 문제 설명을 보면 파일 속에 숨겨있는 텍스트 파일이 있고(flag.txt) 텍스트 파일 안에 플래그가 있을 것이라고 추측해 볼 수 있다. 다운로드한 파일을 보면 확장자 .edb 형태를 가지고 있다. 이 edb파일안의 구성파일들을 추출하는 프로그램이 따로 존재한다. 링크텍스트 Winsearchdbanalyzer

[Webhacking.kr] old-01 writeup
문제 해결을 위한 주요 코드 user_lv 쿠키 값이 4이상일 때 쿠키 값이 1로 재설정된다. user_lv 쿠키 값이 3보다 클 때 solve된다고 하고 있으니, 3과 4 사이의 실수를 입력해보자. F12 -> Application -> Cookies user_lv 쿠키 값이 1로 설정되어 있다. user_lv 쿠키 값을 3.5로 지정한다.

Hypercraft - HTB Business CTF '23
얼마 전 진행된 HTB Business CTF 2023에서 Hypercraft라는 문제를 풀었습니다. 어떤 식으로 풀었는지 안 까먹으려고... 간단하게 내용을 정리해봅니다. 굳이 밑에 안 읽고 gist만 보셔도...? https://gist.github.com/dustty0/f8c501d805441f399aec3c08ebe7c787 Stage 0. HTML 문제에서는 위와 같은 이메일이 주어집니다. 이메일의 첨부파일에는 위와 같은 HTML이 있고, HTML 내의 스크립트가 아래와 같은 압축 파일을 생성합니다. 
CTF - Reversing
Reversing 오랜만에 리버싱 풀어본다. 제일 쉬운 것부터 풀어보자. 파일을 다운받고, 실행해보면 이런 창이 뜨는데, 리버싱을 통해 비밀번호를 알아내고 푸는 문제인 것으로 보인다. 일단 x64 dbg를 켜서 파일을 분석해보자. 문자열 찾기를 이용해서 의심가는 메모리 위치로 이동해 보자. 
Normaltic CTF - UNION SQL Injection
UNION SQL Injection http://ctf.segfaulthub.com:9999/sqli_1/search.php 해당 사이트는 게시판 서비스를 제공한다. Admin 을 입력하니 Adminer 가 출력된다. 추측건대 검색 기능이 like query를 사용하는 것 같다. % 특수문자가 필터링 되는지 확인하기 위해 Admin% 문자열로 검색한다. 검색 결과 % 문자가 출력되지 않는 것으로 보아 해당 문자를 필터링하지 않는다. 
Normaltic CTF - XSS 2번 시나리오 모의해킹
XSS_2 (Reflected XSS) 로그인과 문의 게시판으로 이루어진 사이트이다. 취약점을 찾기 위해 로그인을 시도하니 마이페이지, 공지사항 페이지가 있다. 우선 마이페이지부터 취약점을 찾아보겠다. 해당 페이지는 아래와 같이 user 파라미터의 값에 맞는 마이페이지를 출력하는 것으로 추측된다. 만약에 reflected xss 취약점이 존재한다면 user 파라미터 값에 따라서 user 명이 바뀔 것이다. 그리고 stored xss 취약점이 존재한다면 유저명, 비밀번호, 생일을 입력하는 곳에 악의적인 스크립트를 삽

Normaltic CTF - XSS 3
Reflected XSS 사이트에 접속하니 마이페이지, 공지사항 두 개의 페이지로 구성되어 있다. 우선 마이페이지부터 취약점이 있는지 확인하겠다. 마이페이지는 수정 기능을 제공하지 않는다. 그런데, 현재 user 파라미터 값이 양인모로 설정되어 있으니, 이름을 수정하는 input 태그에 양인모 텍스트가 입력되어 있다. 소스 코드를 확인하니 `placehol

Normaltic CTF - Auth 1~4
Auth 1 Login Page 문제 사이트에 접속하니 로그인 페이지를 출력한다. 로그인 페이지를 우회하기 앞서 버프스위트의 HTTP history 탭에서 통신 과정을 살펴보겠다. HTTP history 문제 사이트에 접속하면 로그인 페이지를 응답하는 것이 아니라 /auth1/ 페이지를 응답하고 해당 페이지에서 자바스크립트를 사용해 로그인 페이지로 리다이렉트한다. ![](https://velog.velcdn.com/images/inmo/post/1719023a-4395-4724-bf17-4e9de383282c/imag