본문 바로가기

전체 글

(59)
[Dreamhack] xss-1 소스 코드 분석 /vuln param 값을 전달 받아 그대로 출력한다 @app.route("/vuln") def vuln(): param = request.args.get("param", "") return param /flag param 값과 FLAG를 check_xss로 전달 후에 read_url 함수의 결과 값을 반환한다 read_url 함수에서 FLAG를 값으로 cookie를 생성한다 def read_url(url, cookie={"name": "name", "value": "value"}): cookie.update({"domain": "127.0.0.1"}) try: service = Service(executable_path="/chromedriver") options = webdriver...
[백준/Python] 2512 예산 문제 링크 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 문제 풀이 예산 요청 금액이 예산보다 작거나 같으면(i mid) 예산 만큼의 예산을 받을 수 있는데, 이는 for문을 이용해서 작성할 수 있다. 이에 따른 총 예산의 합이 M보다 크면(total > m) 예산을 초과하게 되므로 배정할 수 있는 예산의 크기를 줄여야 한다. 반대로 M보다 작거나 같으면(total
[백준/Python] 7576 토마토 문제 링크 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제 풀이 일반적인 bfs 문제와는 조금 다르게 시작점(익은 토마토)의 위치가 1개 이상이라는 점이다. 처음으로 얻은 익은 토마토의 위치를 큐에 넣은 후 너비 우선 탐색을 진행하면, 해당 시작점에 대해 너미 우선 탐색을 모두 진행한다. 이후에 큐에 새로운 익은 토마토의 위치가 추가되고 다시 너비 우선 탐색을 수행해야 할 경우, 기존에 방문한 위치를 다시 방문하는 문제가 발생하므로 다른 방법으로 접근해야 한다. 따라서 익은 토마토의 위치..
[Dreamhack] Cross-Site-Scripting (XSS) ClientSide: XSS1. XSS1.1. XSS (Cross Site Scripting) 클라이언트 사이드 취약점 중 하나로, 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있음 공격자는 해당 취약점을 통해 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의의 기능을 수행할 수 있음 SOP 보안 정책이 등장하면서 서로 다른 오리진에서는 정보를 읽는 행위가 이전에 비해 힘들어져, 이를 우회하는 다양한 기술이 소개되면서 XSS 공격은 지속되고 있음 1.2. XSS 발생 예시와 종류 이용자가 삽입한 내용을 출력하는 기능에서 발생클라이언트는 HTTP 형식으로 웹 서버에 리소스를 요청하고 서버로부터 받는 응답, 즉 HTML, CSS, JS 등의 웹 리소스를..
[InsecureBankv2] 환경 구축 환경 Kali Linux(2023, bridge mode): InsecureBankv2, Android Studio, adb, drozer, Apktool, JD-GUI Windows 10: Nox Nox 설정 root 설정: 녹스 시스템 설정 > 일반 > ROOT 켜기 체크 개발자 모드: 설정 > 시스템 > 태블릿 정보 > 빌드 번호 연속 클릭 디버깅 모드: 설정 > 시스템 > 개발자 옵션 > USB 디버깅 모드 네트워크 설정: 녹스 시스템 설정 > 핸드폰 > 브릿지 모드 체크 InsecureBankv2 설치 서버 설정 https://github.com/dineshshetty/Android-InsecureBankv2에서 zip 파일 다운로드 후 압축 해제한다 파이썬 모듈 설치 wget https://b..
[Dreamhack] session-basic 소스 코드 분석 / session으로부터 가져온 username이 admin이면 FLAG를 출력하고 아니면 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"..
[Dreamhack] cookie 소스 코드 분석 / cookie로부터 가져온 username이 admin이면 FLAG를 출력하고 아니면 admin이 아니라는 문구를 출력한다 @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"}') return render_template('index.html') /login form으로부터 전달 받은 password와 users의 password를 비교하여 일치하면 ..
[Dreamhack] Cookie & Session Background: Cookie & Session 1. 쿠키 1.1. 쿠키 Key와 Value로 이뤄진 일종의 단위로, 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 같이 전송 서버는 클라이언트의 요청에 포함된 쿠키를 확인해 클라이언트를 구분할 수 있음 클라이언트의 IP 주소와 User-Agent는 매번 변경될 수 있는 고유하지 않은 정보일 뿐만 아니라, HTTP 프로토콜의 Connectionless와 Stateless 특징 때문에 웹 서버는 클라이언트를 기억할 수 없음 Connectionless와 Stateless 특성을 갖는 HTTP에서 상태를 유지하기 위해 쿠키(Cookie)가 탄생 HTTP 프로토콜 특징 Connectionless특정 요청에 대한 연결은 이..
[Android] 안드로이드 4대 컴포넌트 애플리케이션 컴포넌트 (구성 요소) 안드로이드 앱의 필수적인 구성 요소, 각 독립된 형태로 존재하며 정해진 역할 수행 각 구성요소는 시스템이나 사용자가 앱에 들어올 수 있는 진입점 인텐트 (Intent): 다른 컴포넌트로부터 작업을 요청하는 데 사용할 수 있는 메시징 객체 액티비티 (Activity) 사용자와 상호작용하는 화면을 나타냄 하나의 애플리케이션에는 여러 액티비티가 존재할 수 있고, 각 액티비티는 특정 기능을 수행하는 화면을 담당 ex) 메인 화면, 로그인 화면, 설정 화면 등 서비스 (Service) 백그라운드에서 실행되는 컴포넌트 사용자 인터페이스(UI)는 제공하지 않음 백그라운드 작업을 처리하거나 다른 애플리케이션과 통신하는 역할 수행 ex) 음악 재생 서비스, 알림 서비스, 데이터 동기화..
[Dreamhack] devtools-sources 풀이 Step1) 문제 파일 확인 Step 2) index.html 파일을 열어서 개발자 도구 source로 이동 Ctrl + Shift + F(전체 페이지 검색)에 DH를 입력하면 css 파일에 flag 값이 있음을 알 수 있다.
[Dreamhack] Background - Web Background: Web 1. 웹 1.1. 웹 인터넷을 기반으로 구현된 서비스 중 HTTP를 이용하여 정보를 공유하는 서비스 웹 서버: 정보 제공 주체 웹 클라이언트: 정보 받는 이용자 HTTP: 웹상에서 서로 통신을 하기 위해 정해둔 일종의 규칙 웹의 발전과 웹 보안의 중요성 초기 웹 서비스는 저장된 문서의 내용을 출력해 이용자에게 제공하는 간단한 서비스 웹과 관련된 기술이 발전하면서 금융, 쇼핑, 협업 등 다양한 분야에서 이용자에게 편의를 주는 복잡한 서비스로 진화 단순히 정보를 보여주는 것에서 정보를 검색하고 직접 제품을 구매할 수 있도록 변화 웹에서 처리하는 정보 자산들이 많아짐에 따라 이들을 안전하게 보관하고 처리해야 할 필요성도 함께 증가 웹을 통한 정보의 교환 과정에서 민감한 정보들이 유..