본문 바로가기

전체 글

(231)
드림핵 cookie 롸업 쿠키로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. 쿠키를 바꿔서 인증 정보를 속이고 admin 계정으로 로그인해야 하는 것 같다. 문제 파일을 보니 app.py하나로 되어있다. 코드는 단순하게 /와 /login링크로 나누어져 있다. @app.route('/') def index(): username = request.cookies.get('username', None) if username: return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else "you are not admin"}') ret..
드림핵 devtools-sources 롸업 https://dreamhack.io/wargame/challenges/267 devtools-sources 개발자 도구의 Sources 탭 기능을 활용해 플래그를 찾아보세요. 플래그 형식은 DH{...} 입니다. Reference Tools: Browser DevTools dreamhack.io 웹해킹 로드맵에서 첫번째 문제이다. 개발자 도구의 Sources 탭 기능을 활용해 플래그를 찾아보세요. 가 문제 내용이다. Background-Web 스테이지에서 Browser Devtools에 대해 배운 내용을 가지고 풀면 될 것 같다. 문제 파일을 보니 뭔가 엄청나게 많다. 개발자 도구를 사용하는 문제라고 했으니 일단 폴더들을 뒤지며 웹페이지를 보여주는 파일들을 찾았다. about, components, p..
Burp Suite Burp Suite는 패킷 조작 프로그램이다.네트워크 간의 정보 전달은 패킷을 주고받으며 진행되는데이 프로그램은 중간에 프록시 서버를 만들어서 패킷을 변조해서 보낸다. 프로그램을 설치하고 실행하면 이런 창이 나오는데 그냥 next를 누르면 된다. 여기서도 그냥 Start Burp를 누르면 된다. 들어가서 proxy 탭에서 proxy settings로 가보면request interception과 response interception에 있는 체크박스를 체크해주어야 요청과 응답 패킷을 모두 조작할 수 있다.그리고 burp suite는 프록시 서버를 사용하기 때문에 컴퓨터 환경에서도 프록시 서버를 켜주어야 한다.윈도우에서 프록시 설정을 검색해서 들어간 뒤에 이렇게 프록시 서버 사용을 켜주어야 한다. 그리고 i..
도커 개념 & 도커라이징 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 여기서 컨테이너는 격리된 공간에서 프로세스가 동작하는 기술이다.컨테이너 기술도 가상화 기술의 일종이지만 기존의 것과는 동작 방식이 다르다.기존의 가상화 기술은 os를 가상화했다. VMware나 Virtual Box 같은 os 전체를 가상화하여 사용하였는데 무겁고 느려서 사용하기 힘들다는 단점이 있다.이를 해결하기 위해 프로세스를 분리하는 기술이 나왔고 이것이 리눅스 컨테이너이다.CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하고 성능의 차이도 거의 없었다.하나의 서버에 여러개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행되어 편리하게 관리를 할 수 있고 컨테이너 하나를 만드는데 걸리는 시간은 1,2초로 가상머신보다 훨씬 빠르다..
게시판(flask)-관리자 글 삭제 권한 관리자 권한은 아주 간단하게 구현했는데, read링크에isadmin = session['username'] == 'admin'이렇게 isadmin 변수를 추가하고 read.html파일로 보내준다.{% if iswriter or isadmin %}삭제{% endif %}{if iswriter %}수정{% endif %}그리고 이런식으로 구조를 바꾸면 관리자일 때는 삭제 버튼이 활성화된다.회원가입할 때 이메일뿐만 아니라 username도 중복체크를 하기 때문에 username이 admin일 때 관리자로 판단한다.그리고 delete링크 처리 부분에서도 isadmin = session['username'] == 'admin'if username in data or isadmin:이런 코드를 넣으면 정상적으로 처..
게시판(flask)-제목, 내용 기준 검색 제목 내용 검색검색을 위해서 board.html 에 검색 form을 추가하였다.@app.route('/search')def search(): search_type = request.args.get('search_type') query = request.args.get('query') conn = connectsql() cursor = conn.cursor(pymysql.cursors.DictCursor) if search_type == 'title': cursor.execute("SELECT * FROM posts WHERE title LIKE %s", ('%' + query + '%',)) elif search_..
게시판(flask)-파일 업로드, 다운로드 파일 업로드, 다운로드 기능을 만들기 위해 먼저 필요한 라이브러리들을 import 한다.from werkzeug.utils import secure_filenameimport osfrom flask import send_from_directory그리고 mysql에서 posts 테이블에 filename이라는 속성을 만든다.mysql> ALTER TABLE posts ADD COLUMN filename VARCHAR(255) NULL; UPLOAD_FOLDER = 'uploads'ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'pptx', 'hwp', 'hwpx', 'docx'}app.config['UPLOAD_FOLDER'] = UPLO..
게시판(flask)-댓글, 추천 댓글을 저장하기 위한 테이블부터 만들어야 한다.mysql> CREATE TABLE comments ( -> id INT AUTO_INCREMENT PRIMARY KEY, -> post_id INT, -> username VARCHAR(255), -> content TEXT -> );mysql에서 CREATE TABLE로 comments 테이블을 만들었다.@app.route('/comment/', methods=['POST'])def comment(id): if 'username' not in session: return redirect(url_for('login')) username = session['username'] con..