분류 전체보기

프롤로그 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..
(1) 모델 수정 class Answer(models.Model): # 질문 - Answer가 Question에 연결 question = models.ForeignKey(Question, on_delete=models.CASCADE, verbose_name='질문', related_name='answers') # 답변 내용 content = models.TextField(verbose_name='내용') # 작성자 author = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='작성자',related_name='answers') # 생성 시간 created_at = models.DateTimeField(default=timezone.now..
질문 답변 게시판 (1) 질문 조회 localhost:8000/questions/ -> GET요청 class QuestionViewSet(viewsets.ModelViewSet): queryset = Question.objects.all() serializer_class = QuestionSerializer # permission_classes = [permissions.IsAuthenticatedOrReadOnly] # 로그인한 사용자만 수정 가능하게 (2) 질문 생성 localhost:8000/question/ -> POST 요청 def create(self, request, *args, **kwargs): # 클라이언트로부터 받은 데이터 data = request.data # 클라이언트에서 제공한 ..
· 웹 개발
프롤로그 이 내용은 Doit! 점프 투 장고 책을 보고 공부하며 정리하는 내용이다. 서버ㆍ개발 환경 분리해야하는 이유 저번 글에서 settings.py 에서 ALLOWED_HOSTS에 서버의 고정 아이피를 입력하였는데, 이렇게 되어 버리면 개발 환경에서 localhost:8000/으로 접속을 할 수가 없다. 그렇다고 해당 칸을 비워버리면 서버가 운영이 되지 않는다. 그래서 서버환경과 개발환경을 다르게 설정해야한다. 서버ㆍ개발 환경 분리하기 (1) settings 디렉터리 생성하기 처음 장고 프로젝트에서 이렇게 준비되어 있을 것이다. settings라는 폴더를 생성하고, setting.py의 파일은 settings 폴더 안에 이동 후 "base.py"로 변경한다. 추가적으로 빈 파일 "local.py"와 ..
성밍쟁
'분류 전체보기' 카테고리의 글 목록 (13 Page)