본문 바로가기

분류 전체보기

(53)
Dreamhack wargame : web-ssrf write up 실습을 통해 익히기 https://dreamhack.io/wargame/challenges/75/ web-ssrf flask로 작성된 image viewer 서비스 입니다. SSRF 취약점을 이용해 플래그를 획득하세요. 플래그는 /app/flag.txt에 있습니다. 문제 수정 내역 2023.07.17 css, html 제공 Reference Server-side Basic dreamhack.io url 입력창에 나와있는 경로대로 버튼 클릭했더니 위와 같이 나옴 1) 코드 분석 /img_viewer @app.route("/img_viewer", methods=["GET", "POST"]) # Flask 애플리케이션에서 /img_viwer 경로로 들어오는 GET 및 POST 요청을 처리하는 라우트를 정의 d..
Server-side Request Forgery(SSRF) 정리 HTTP 요청을 전송하는 라이브러리를 제공-> HTTP 요청을 보낼 클라이언트뿐만 아니라 서버와 서버간 통신을 위해 사용됨. 다른 웹 애플리케이션에 존재하는 리소스를 사용하기 위한 목적으로 통신 ex) 마이크로서비스 간 통신, 외부 API 호출, 외부 웹 리소스 다운로드 등 PHP -> php-curl NodeJS -> http 파이썬 -> urlib, requests 관리 및 코드의 복잡도를 낮추기 위해 마이크로서비스들로 웹 서비스 구현 마이크로서비스는 주로 HTTP, GRPC 등을 사용해 API 통신함 💡마이크로서비스란? 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식. 이러한 서비스는 독립적인 소규모..
Dreamhack wargame : image-storage write up 실습을 통해 개념 익히기(로드맵 강의자료 정리) https://dreamhack.io/wargame/challenges/38/ image-storage php로 작성된 파일 저장 서비스입니다. 파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다. Reference Server-side Basic dreamhack.io 1) 코드 분석 1-1. index.php Home List Upload ▶️ list.php와 upload.php로 이동하는 메뉴 출력 1-2. list.php ▶️ 이용자가 업로드한 파일을 uploads 폴더에 복사하며, 이용자는 http://host1.dreamhack.games:[PORT]/uploads/[FILENAME] URL을 을 통해 접근가..
Command Injection 정리 💡Injection?악의적인 데이터를 프로그램에 입력하여 이를 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법, 웹 애플리케이션을 대상으로 하는 인젝션 공격은 SQL Injection, Command Injection등이 있다. Command injection은 이용자의 입력을 시스템 명령어로 실행하게 하는 취약점명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생- 입력한 임의 IP에 ping을 전송(in pyhton application)os.system(“ping [user-input]”) - 임의 파일을 읽기os.system(“cat [user-input]”) 💡이런 방식으로 함수를 사용할 때 이용자의 입력을 제대로 검사하지 않으면 임의 명령어가 실행가능‼️..
NoSQL Injection 정리 및 dreamhack wargame : mango write up 실습을 통해 익히기 https://dreamhack.io/wargame/challenges/90/ Mango Description 이 문제는 데이터베이스에 저장된 플래그를 획득하는 문제입니다. 플래그는 admin 계정의 비밀번호 입니다. 플래그의 형식은 DH{...} 입니다. {'uid': 'admin', 'upw': 'DH{32alphanumeric}'} Reference Serv dreamhack.io 문제를 푸는 법 1) 코드 분석 -> 웹서비스 분석 -> 엔드 포인트 부분 잘보기, 핵심 함수 코드 잘보기 첫번째 엔드 포인트 /login app.get('/login', function(req, res) { // HTTP GET 요청 핸들러 정의, /login 경로로의 GET 요청에 대한 처리 // ..
웹해킹 유용도구 : 개발자 도구 사용법 개발자 도구 사용법 1) 키보드에 F12 or ctrl+shift+i (window 기준) 2) 구조(크롬에서 개발자 도구 실행) 2-1) Elements : html / CSS 상태 확인⏬ 웹 페이지의 구조를 시각적으로 확인하고, 요소의 스타일을 수정가능 화면에 표시되는 요소의 위치와 크기를 확인가능 2-2) Sources : 스크립트 디버깅 (break point 지정 및 변수 모니터링 등)⏬ 웹 페이지의 소스 코드를 확인하고 디버깅가능 JavaScript 파일을 디버깅하고, 중단점을 설정하며, 변수의 값을 확인가능 로컬 및 원격 서버에 연결하여 소스코드를 관리가능 2-3) Console : 콘솔 (변수 정보를 확인하고 오류 메시지 표시) ⏬ Javascript 코드를 실행하고 디버깅하는데 사용됨 에..
Dreamhack wargame : ex-req-ex write-up 코드 분석 일단 여기서 힌트를 얻을 수 있는 것은 정규표현식을 사용하여 이메일 주소 패턴이 매칭이 된다면 해당 이메일 주소와 플래그 값을 화면에 출력해준다고 구현되어있다.(feat. chatgpt) 그렇다면 패턴은 어떻게 되는 것인가? 여기서 뭔지 모르겠어서 쥐피티한테 물어봤다 (쥐피티없었으면 어쩔뻔;;) 그래서 패턴에 맞게 임의로 dr12_a5e3am@naver.com을 입력했더니!!! 플래그를 얻을 수 있었다.
Dreamhack wargame : File Vulnerability Advanced for linux write-up 코드 분석 세 가지 엔드포인트로 나눠서 분석 -> /, /file, /admin 첫 번째 코드 부분 -> 그냥 홈화면 같다. 힌트없음 /file에서 HTTP GET 요청에 대한 쿼리 문자열에서 path값인 해당 경로의 파일을 열어서 내용을 화면에 출력하는 코드이다. Path traversal 의도한 문제인 것 같음. 여기서 쿼리문자열(쿼리스트링)이란? 사용자가 입력 데이터를 전달하는 방법으로 url 주소에 어떤 데이터를 파라미터를 통해 서버측에 전달하는 것 정해진 엔드포인트 주소 이후에 ?(물음표)룰 쓰는 것으로 쿼리스트링이 시작 parameter = value로 필요한 파라미터의 값 파라미터가 여러개일 경우 &를 붙힌다. /admin에서 @key_required는 무엇인가? 물어보면 코드 맨 위에 나와..