해킹
-
03-02. Server Side Attack - Non-Relational DBMS해킹/웹해킹 이론 2023. 11. 21. 02:51
Non-Relational DBMS 관계형 DBMS와 달리 SQL를 사용하지 않고 복잡하지 않은 데이터를 저장해 단순 검색 및 추가 검색 작업을 위해 매우 최적화된 저장 공간인 것이 큰 특징이자 RDBMS와의 차이점이다. RDBMS는 SQL이라는 정해진 문법을 통해 데이터를 저장하기 때문에 한 가지의 언어로 다양한 DBMS을 사용할 수 있다. 반면에 NoSQL은 Redis, Dynamo, CouchDB, MongoDB 등 다양한 DBMS가 존재하기 때문에 각각의 구조와 사용 문법을 익혀야한다는 단점이 있다. MongoDB, Redis, CouchDB에 대해서 알아보자. MongoDB(https://docs.mongodb.com/manual/reference/operator/query/) MongoDB는 ..
-
03-01. Server Side Attack - Relational DBMS해킹/웹해킹 이론 2023. 11. 21. 02:42
Relational DBMS 관계형 데이터베이스 시스템을 이르는 말로 관계형은 행과 열의 집합인 테이블형식으로 데이터를 저장하며 비관계형은 키-값 형식으로 저장을 한다. 대표적인 Relational DBMS로는 MySQL, MariaDB, PostgreSQL, SQLite이 있다. RDBMS에서 관계 연산자는 Structured Query Language (SQL) 라는 쿼리 언어를 사용하고, 쿼리를 통해 테이블 형식의 데이터를 조작한다. SQL 쿼리의 종류로는 DDL, DML, DCL이 있다. DDL(Data Definition Language) 데이터를 정의하기 위한 언어. 스키마, 데이터베이스의 생성/수정/삭제 등의 행위를 수행 DML(Data Manipulation Language) 데이터를 조작..
-
csrf-1해킹/웹해킹 실전 2023. 11. 21. 01:30
https://dreamhack.io/wargame/challenges/26 csrf-1 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. 문제 수정 내역 2023.07.18 css, html 제공 및 read_url() 코드 일부가 변경되었습니다. Referen dreamhack.io @app.route("/admin/notice_flag") def admin_notice_flag(): global memo_text if request.remote_addr != "127.0.0.1": return "Access Denied" if request.args.get("userid", "") != "admin": return "Access Deni..
-
xss-2해킹/웹해킹 실전 2023. 11. 21. 00:57
https://dreamhack.io/wargame/challenges/268 xss-2 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 플래그 형식은 DH{...} 입니다. 문제 수정 내역 dreamhack.io xss-1와 달리 vuln페이지에 들어가면 script가 동작하지 않는 것을 확인할 수 있다. param으로 들어오는 script tag를 걸러내고 있다는 뜻이므로 다른 방법을 사용해 우회해야한다., , 등을 사용해서 할 수 있는데 우선적으로 시도해볼건 대소문자를 변경해서 시도해보는것이다.와 같은 방법을 고려해봤지만 동작하지않았다.따라서 를 입력해 flag를 취득 할 수 있었다.
-
xss-1해킹/웹해킹 실전 2023. 11. 21. 00:34
https://dreamhack.io/wargame/challenges/28 xss-1 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 플래그 형식은 DH{...} 입니다. 문제 수정 내역 dreamhack.io def read_url(url, cookie={"name": "name", "value": "value"}): cookie.update({"domain": "127.0.0.1"}) try: service = Service(executable_path="/chromedriver") options = webdriver.ChromeOptions() for _ in [ "headless"..
-
session-basic해킹/웹해킹 실전 2023. 11. 21. 00:07
https://dreamhack.io/wargame/challenges/409 session-basic Description 쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. 플래그 형식은 DH{...} 입니다. Reference Background: Cook dreamhack.io @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_..
-
cookie해킹/웹해킹 실전 2023. 11. 20. 22:55
https://dreamhack.io/wargame/challenges/6 FLAG를 보여주는 코드에 집중해야한다. '/'로 끝나는 홈페이지에서 FLAG를 보여주는데 이 때 브라우저에 저장된 쿠키 중 key값이 username인 값을 가져와 변수 username에 저장하고, username이 admin이라면 FLAG를 보여준다. @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 ..
-
02. SOP 원칙 및 Client Side Attack해킹/웹해킹 이론 2023. 11. 18. 01:05
SOP(Same Origin Policy) 브라우저는 웹 리소스를 통해 간접적으로 타 사이트에 접근할 때도 인증 정보인 쿠키를 함께 전송하는 특징을 가지고 있다. 따라서, 클라이언트 입장에서는 가져온 데이터를 악의적인 페이지에서 읽을 수 없도록 해야 한다. 따라서 타 사이트에 접근해 읽어 올 때, 해당 사이트가 같은 출처 (Same Origin)인지 검사한다. 이것이 바로 브라우저의 보안 메커니즘인 동일 출처 정책 (Same Origin Policy, SOP) 이다. 악성 데이터를 읽어오는 것이 문제 이므로 다른 출처의 사이트를 쓰는 행위는 규제하지 않는다. Same Origin은 URL의 프로토콜, 포트, 호스트가 모두 같을 때 Same Origin이라 한다. 프로토콜은 앞서 말한 http / http..