보안 스터디

문제 https://dreamhack.io/wargame/challenges/269 csrf-2 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. 문제 수정 내역 2023.07.18 css, html 제공 및 read_url() 코드 일부가 변경되었습니다. Referen dreamhack.io 문제코드 #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for from selenium import webdriver from selenium.webdriver.chrome.service import Service impor..
프롤로그 CSRF에 대해 조금 더 찾아봤는데, (1) 내가 은행사이트(예시)에 접속함 (2) 쿠키가 브라우저에 저장됨. (3) 공격자가 만든 악성 사이트에 접속함 (4) 브라우저에 저장되어있는 쿠키를 사용하여 악의적인 행동 이런 느낌이다. 그러니까 핵심은 "브라우저"에 "쿠키"가 저장되어서 이 CSRF 공격이 이루어질 수 있다...라는 거로 받아들이니까 좀 이해가 되는 거 같다. 그럼...문제를 풀어보자 문제 문제파일 #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver from selenium.webdriver.chrome.service import Service import u..
프롤로그 CSRF 개념은 뭐 웹개발할 때 내가 알고 있던 지식으로는 이 게시물이 정상적인 사람으로부터 폼을 받았는가 체크하는 것으로만 단지 알고 있었다. 네이버 뒤져봤을 때는 "특정 사용자를 대상으로 하지 않고, 불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금 등)을 하게 만드는 공격이다. 즉 내가 알던 개념이 아니었고, 이 드림핵 을 통해서 개념을 잡아보겠다. https://learn.dreamhack.io/172# 로그인 | Dreamhack dreamhack.io Cross Site Request Forgery (CSRF) 웹 서비스는 쿠키 또는 세션을 사용해 이용자를 식별하는데, 임의 이용자의 쿠키를 사용하여 이용자의 권한으로 HT..
문제 문제파일 app.py #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver from selenium.webdriver.chrome.service import Service import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FLAG**]" def read_url(url, cookie={"name": "name", "value": "value"}): cookie.update({"do..
프롤로그 Mitigation : Same Origin Policy 을 대충 해석해보니까 완화/진정 : 같은 원산 정책이라고 적혀있는 걸 보아하니 뭔가 Same Origin Policy 라는 정책으로 무언갈 완화 시키는 것 같다. https://learn.dreamhack.io/186# 로그인 | Dreamhack dreamhack.io Same Origin Policy(SOP) 쿠키는 브라우저 내부에 보관되고, 이 쿠키를 HTTP 요청에 포함시켜 전달한다.그런데 이게 타 사이트에 접근할 때도 인증 정보인 쿠키를 함께 전송하는 특징을 가지고 있다. 그래서 악의적인 페이지가 클라이언트의 권한을 얻기 위해 이 쿠키를 얻으면 보안 위협이 생겨버린다. 그냥 세션 id 악의적으로 A한테 받을 거 나한테 받는다 이런..
문제 session-basic(Level 1) 문제파일 #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG } # this is our session storage session_storage = { } @app.route('/') def index(): session_id = request.cooki..
문제 cookie (beginner) 문제파일 #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' users = { 'guest': 'guest', 'admin': FLAG } @app.route('/') def index(): username = request.cookies.get('username', None) if username: return render_template('index.html', text..
프롤로그 다시 한 번 해보자.... 아직 아무것도 모르겠긴 한데 무지성으로 박으면 할 만 하겠지? execve 셸코드 내가 알고 있던 건, exec 함수군들은, 인자로 받은 프로그램을 자신이 현재 실행중인 메모리에 덮어쓰기 하여 실행시키는 것으로 알고 있다. 그래서 execve 셸코드를 한 번 해보자. execve("/bin/sh", null, null) 이걸 실행할려면, 환경변수도 Null, 넘겨줄 인자 배열도 Null이다. 고로, syscall 은 execve, arg1(rsi)= 0(null), arg2(rdx) = 0 으로한다 ;Name: execve.S mov rax, 0x68732f6e69622f push rax mov rdi, rsp ; rdi = "/bin/sh\x00" xor rsi, r..
용어 정리 익스플로잇 : 해킹 분야에서 상대 시스템을 공격하는 것. 상대 시스템에 침투하여 시스템을 악용하는 해킹 셸코드 : 익스플로잇을 위해 제작된 어셈블리 코드 조각. 셸(Shell) : 사용자가 운영체제와 상호작용할 수 있도록 하는 명령줄 인터페이스 파일 서술자 (fd) : 유닉스 계열의 운영체제에서 파일에 접근하는 소프트웨어에 제공하는 가상의 접근 제어자. 0번은 입력, 1번은 출력 orw 셸코드 작성 char buf[0x30]; int fd = open("/tmp/flag", RD_ONLY, NULL); read(fd, buf, 0x30); write(1, buf, 0x30); /tmp/flag 파일을 열고, 읽은 뒤 화면에 출력해주는 것을 어셈블리로 구현해보자. (1) int fd = open..
프롤로그 솔직히 가상머신에서 VI 편집기 열어가면서 하기 너무 귀찮을 거 같아서 Visual Stduio Code 에서 어떻게든 하고 싶어서 이것저것 찾아보았는데, wsl2 버전을 설치해보라는 피드백을 받아서 한 번 설치해보 1. wsl2 설치하기 https://webnautes.tistory.com/1847 WSL2를 설치하여 Ubuntu 22.04 사용하는 방법 Windows 11에 WSL2 ( Windows Subsystem for Linux )를 설치한 후, Ubuntu 22.04를 설치한 과정을 다루고 있습니다. Windows 10에서도 거의 동일하게 진행가능합니다. 2017. 12. 15 최초작성 2021. 05. 19 2021. 08. 01 2022. 11. 25 webnautes.tisto..
프롤로그 저번 글에서 WSL을 이용하여 VS코드에서 pwndbg를 사용하려고 하였다. 그러나 계속 gdb에서 메모리에 접근할 수 없다고 나오면서 원인을 파악할 수 없었다. 이를 해결하는 법을 위에 3대의 컴퓨터에서 다시 설치하고 우분투 재설치만 5번을 해봤는데 되지 않아서 가상머신을 이용하는 방식을 이용하기로 하였다. gdb에 대한 뜻은 아래 글에서 적었지만 별 내용은 없을 것이다. https://taesan-smj.tistory.com/11 [드림핵] Tools : gdb (시스템 해킹) gdb란? gdb(GNU debugger) : 리눅스의 대표적인 디버거로, 오픈소스로 개발되어 있어서 무료 설치 가능하다. 오래되었기에 다양한 플러그인이 개발되어있다. gdb 설치하기 1. VS코드실행 2. TERMI..
gdb란? gdb(GNU debugger) : 리눅스의 대표적인 디버거로, 오픈소스로 개발되어 있어서 무료 설치 가능하다. 오래되었기에 다양한 플러그인이 개발되어있다. gdb 설치하기 1. VS코드실행 2. TERMINAL을 우분투로 변경 3. 리눅스 업데이트 $sudo apt-get update 4. gdb 설치 git clone https://github.com/pwndbg/pwndbg cd pwndbg ./setup.sh 5. 설치 확인 $gdb gdb 실습 1. 파일 작성 2. 디버그 확인 entry? 리눅스는 실행파일의 형식으로 ELF(Executable and Linkable Format)를 규정한다. - 헤더 : 실행에 필요한 여러 정보 - 여러 섹션 : 컴파일된 기계어 코드, 프로그램 문자..
성밍쟁
'보안 스터디' 카테고리의 글 목록 (4 Page)