web

    [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 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 명령여를 ..

    [CTF] Layer7 & Trust CTF WriteUp

    Layer7 & Trust CTF 더보기 순위: 8위 Misc - Sanity Check [50] nc 명령어를 통해 주어진 서버로 접속해보았다. FLAG : L7TR{this_is_nc(wikipedia.org/wiki/Netcat)} Web - Unexploitable [50] 문제에 제시된 URL로 접속해보았다. 해당 URL에서 저 문구 하나밖에 발견할 수가 없어서 당황 좀 했다. app.py를 열어보니 from flask import Flask app = Flask(__name__) @app.route('/') def main(): return 'sorry this challenge is unexploitable zzlol' if __name__ == '__main__': app.run(debug..

    HackCTF Web - 보물 write up

    문제에 제시된 사이트 접속 페이지에 제시된 버튼을 눌러보자 page1 버튼을 누르니 page 파라미터를 통해 1이란 값을 받는 것을 알 수 있다 페이지 숫자 중에 비밀이 있고, 그곳에 보물을 숨겨놓았다고 한다 page1 버튼을 눌렀을 때 변한 것이 하나 더 있다. 암호화(?) 되어있는 듯한 문자열이 출력되었다. 이를 통해 페이지 파라미터로 어떤 특정 수를 전달해주면 Flag가 나올 것이라 예측하고 풀어볼 수 있다. python 코드를 짜서 브루트포싱 공격(무차별 대입 공격)을 해보자 HackCTF 사이트에서의 Flag 형식은 HackCTF{~~~} 이기 때문에 페이지 수를 1씩 증가시키면서 요청을 보내고 만약 Flag가 바로 출력이 된다면 페이지 번호를 출력하고 반복문을 종료하는 코드를 작성했다. imp..