본문 바로가기

전체 글

(210)
드림핵 xss-1 롸업 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. @app.route("/flag", methods=["GET", "POST"]) def flag(): if request.method == "GET": return render_template("flag.html") elif request.method == "POST": param = request.form.get("param") if not check_xss(param, {"name": "flag", "value": FLAG.strip()}): return '' return '' flag를 얻으려면 여기서 check_xss에 전달되는 val..
Cross-Site-Scripting (XSS) xss는 클라이언트 사이드 취약점 중 하나이다. 웹에 악성 스크립트 삽입해서 이용자가 이 악성 스크립트가 포함된 사이트를 방문하면 쿠키, 세션을 탈취하는 등의 공격이 이루어질 수 있다. xss 공격은 이용자가 삽입한 내용을 출력하는 기능에서 발생한다. 이런 식으로 title과 content를 받아서 표시해주는 코드가 있을 때 이런 식으로 script 태그를 삽입해 원하는 동작을 수행하게 만들 수도 있다. script 태그 안의 자바스크립트를 이용해서 웹 페이지를 조작하거나, 웹 브라우저의 위치를 임의의 주소로 변경하는 등의 행위를 할 수 있다. 이 코드는 쿠키 및 세션을 탈취할 수 있는 공격 코드이다. Stored XSS는 파일 형태로 저장된 악성 스크립트를 조회할 때 발생한다. 게시물이나 댓글에 악성 ..
드림핵 session-basic 롸업 쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. @app.route('/') def index(): session_id = request.cookies.get('sessionid', None) try: # get username from session_storage username = session_storage[session_id] except KeyError: return render_template('index.html') return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else..
드림핵 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는 프록시 서버를 사용하기 때문에 컴퓨터 환경에서도 프록시 서버를 켜주어야 한다. 윈도우에서 프록시 설정을 검색해서 들어간 뒤에 이렇게 프록시 서버 사용을 켜주어야 한다. ..
도커 개념 & 도커라이징 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 여기서 컨테이너는 격리된 공간에서 프로세스가 동작하는 기술이다. 컨테이너 기술도 가상화 기술의 일종이지만 기존의 것과는 동작 방식이 다르다. 기존의 가상화 기술은 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: 이런 코드..