전체 글
[WEB] SSTI (Server-Side Template Injection) for Jinja2
0. Server-Side Template Injection SSTI(Server Side Template Injection)은 공격자가 서버측 템플릿 구문을 통한 악성 페이로드를 페이지에 삽입하여 실행되도록 하는 공격기법이다. 간단한 예시를 통해 이해해보자. ... ... {value} ... ... 위의 코드가 template engine에서 처리 되어 value 파라미터에 "Hello world"가 전달된다면 아래와 같이 치환된다. ... ... Hello world ... ... 이 때, 임의의 실행 가능한 코드를 넘겨준 경우, 서버측에서 실행 과정을 거친 후 결과가 반환된다. 예를 들면 7*7 이라는 식이 49라는 값으로 반환되어 사용자에게 출력된다. {{7*7}} # output: 49 SST..
[CTF] 2021 BISC BoB OPEN CTF Writeup
2021.11.27(토) 14:00:00 ~ 2021.11.27(토) 17:59:59 User: 9ucc1 (Score: 3742) Ranking: 1st in BoB (Total Ranking: 2nd) 대회시간이 짧아서 가능했던 등수...! 좋은 문제 제작해주신 라온화이트햇 여러분께 감사드립니다. [MISC] who_are_you #!/usr/bin/env python3 import base64 import sys admin_account = b"YWRtaW46YWRtaW4=" def main(): print('give me account info ( base64(id:pw) format ) ') user_account = input().encode() if user_account == admin_a..
[CTF] 2021 Layer7 CTF͏͏ WriteUp
2021.11.20(토) 09:00:00 ~ 2021.11.20(토) 23:59:59 User: 9ucc1 (Point: 3333) Place: 5th (고등부: 4th) 다른 분야 공부가 시급하네요. [WEB] handmade - 100 📌 Summary 파일 읽어오는 서비스를 이용해서 flag 파일을 읽으면 되는 간단한 문제입니다. 📌 Analysis 페이지 디자인은 아래와 같습니다. 소스코드 구조는 아래와 같습니다. 제공된 소스코드 중, app.py에 아래와 같은 함수가 존재합니다. def make_response(req_data): try: method = req_data['method'] req_uri = req_data['uri'].path qstring = req_data['uri'].que..
[WEB] DOM Clobbering XSS (DOM Based XSS)
이 글에선 DOM Clobbering이 무엇인지에 대해 소개하고, DOM 취약점을 Clobbering 기술을 이용하여 어떻게 exploit 해야하는지, 방어는 어떠한 방식으로 이루어지는지에 대해 설명할 것이다. 0. Basic 1) DOM Clobbering XSS vs DOM Based XSS 처음 DOM Clobbering XSS를 접했을 때, DOM Based XSS랑 다른건가? 라는 생각이 들었다. XSS의 종류에 대해 간단하게 짚고 넘어가보자. 위 그림을 보면 알 수 있듯이, XSS에는 2가지 종류 Stored(Persistent) XSS, Reflected XSS로 구분이 가능하다. DOM Based XSS는 Stored 형태로 나타날 수도 있고, Reflected 형태로 나타날 수도 있다. ..
[WEB] JWT(JSON Web Token) Attack
0. Basic 1) JWT란? JWT란, JSON Web Token의 약자로 JSON 문서를 Base64로 인코딩 후 서명하는 방식을 말한다. 대부분 웹사이트 사용자 인증에 사용되고, 쿠키에 주로 포함되어 쓰인다. JWT는 사용자의 정보나 세션 만료 시간 등을 JSON 문서 형식(Dictionary)으로 나타낸다. 2) JWT 구성 JWT의 형태는 다음과 같다. 세 부분으로 나뉘어져 있고, 각각은 .(dot) 으로 구분된다. Frame) Header . Payload . Signature Header alg: 어떤 알고리즘을 이용하여 서명(Sign)을 할 것인가? typ: 미디어타입. 옵션값이며 JWT일 경우 "JWT" Base64({ "alg": "HS256", "typ": "JWT" }) Paylo..
[WEB] SQL Injection & 필터링 우회 방법
Basic SQL Injection DML(Data Manipulation Language) Select: 데이터를 조회하는 구문 (Ex: Login Form) SELECT uid, title, boardcontent FROM boards \ WHERE boardcontent like '%abc%' LIMIT 5 # "like" != "=" / 와일드카드 사용 시 like 사용 필수 # %: 아무 문자열 (와일드카드) # _: 아무 문자 (와일드카드) Insert: 데이터를 추가하는 구문 INSERT INTO boards (title, boardcontent) \ VALUES ('title 1', 'content 1'), ('title 2', 'content 2'); Update: 데이터를 수정하는 구문..
[CTF] 제 2회 JBU-CTF WriteUp - WEB 문제
팀명 : Cbar=True, 닉네임 : w3bh4ck3r 순위 : 4위 36시간동안 열심히 풀었지만, 플래그 키퍼로 인해 4위를 하게되었다. [WEB] Fight_The_Aliens[100] : scpCTF{E4r7hi4n_N3v3r_L053} 아래 사진과 같이 마우스 커서를 외계인이 따라다니는 문제이다. 외계인 사진때문에 달이 클릭되지 않는다. 외계인 사진을 찾아서 지워버렸다. [WEB] Command Injection[100] : scpCTF{Y0u_fol1ow3d_w3ll} 문제사이트에 들어가 입력하라는 대로 입력해보았다. 친절하게 설명해주신다. 소스코드까지 보여주신다. ; ls -al * 입력해서 현재 위치의 모든 폴더를 열어보았다. 보아하니 ./a/flag.txt 파일이 있다. cat 명령여를 ..
[대회] 2020 데이터 크리에이터 캠프 본선 최우수상
팀명 : 현상금사냥꾼(한국디지털미디어고) 대회에 참가하여 많은 것을 공부하고 경험해보게 된 좋은 계기가 되었다. 대회에서 제시된 문제는 이러했다. 주어진 데이터 셋의 형식은 이러했다. pkl 파일로, 파이썬의 pickle 모듈을 사용하여 객체를 파일로 저장한 형태이다. pandas의 read_pickle 함수를 이용하여 DataFrame 형태로 불러왔다. 데이터는 이런 구조로 이루어져있다. 팀원들과 문제를 이해하며 문제와 함께 제시된 예제를 분석하고 머신러닝을 통해 모델이 더 나은 예측을 할 수 있도록 만드는 것이 우리의 목표였다. 이 예제를 분석하고 개선시키기 위한 방안으로 우린 두 가지를 생각해냈다. 1. Logistic Regression / KNN 의 하이퍼 파라미터를 개선하는 방법 2. 다른 모..