Share with QR code

우측의 QR코드를 카메라 또는 전용앱등을 통하여 촬영하시면 손쉽게 해당 글을 공유하실수 있으며, 목차 선택후 공유시 해당 목차가 공유됩니다.

추천 tag

  • node.js

    Node.js

    JavaScript runtime for servers
  • next.js

    Next.js

    React framework for web apps
  • JavaScript

    JavaScript

    makes web pages interactive
  • html

    HTML5&CSS3

    HTML5 structures, CSS3 styles web pages
  • Node.js

    JavaScript runtime for servers
  • Node.js

    JavaScript runtime for servers
  • Node.js

    JavaScript runtime for servers
  • Node.js

    JavaScript runtime for servers

라조기의 IT역경기

여러분의 방문을 환영합니다!! 🥳🥳

다양한 IT 분야를 깊이 있게 연구하여 빠르고 정확한 정보를 제공하는 블로그가 되겠습니다.

총 방문자

총 포스팅

블로그 D+DAY

IT에 빠져든지..

Cybersecurity/Web Hacking

[드림핵 웹해킹] LEVEL 1 KTX Notes

온바다 요새의 라조기 2025. 3. 6. 19:00
    INDEX
TARGET
제가 공부할때 목표로 하던 것 입니다.
반응형

 

 

 

경고!! 개인적으로 1분 만에 푼 문제로써.. 되게 쉽습니다....

 

 

1. 코드 분석

 

대충 웹사이트와 코드를 보면 파일 이름(filename)노트(note)를 입력하여

서버폴더 내에 notes/ 디렉토리 안에 해당 파일들을 저장하고,

파일이름을 검색하면 다운로드할 수 있도록 되어있다.

 

즉, 노트를 저장하고 다운로드할 수 있는 서비스인 것이다. (KTX Notes 라는 이름이 KTX 처럼 빠르다는... 추측)

실행된 웹 페이지
홈 페이지, save(post) api, download(get) api 에 대한 코드

 

 

여기서 중점은 우리가 타깃으로 하는 flag 파일을 따로 서버파일인 app.py 파일에서는 불러오지 않는 것 같고

따로 도커파일에서도 해당파일 관련 설정은 없다.

 

그렇기에 파일이름인 notes/ 디렉터리 안에 있는 파일을 가져오는 download 라우터flag 파일을 다운로드할 수 없다.

 

 

 

2. os.path.join()의 취약점

 

하지만 다시 생각해 보면 파일을 가져올 때 사용하는

os.path.join(NOTES_DIR, filename)

 

 

💡 코드설명 : "os.path.join()"

파일이나 디렉토리 경로를 올바르게 연결하여 파일의 전체 경로를 생성 하는 함수

 

 

이 코드의 문법을 보면 기본적으로 ('기준디렉터리', '파일 이름')이다.

서버 라우터에서 디렉토리로 사용하는 NOTES_DIR을 notes/ 로 지정함

 

기준 디렉터리를 notes/ 로 지정하였지만 사실은 파일이름(filename) 에도 디렉토리 입력이 가능하다.

 

즉 상위폴더로 이동하는 ../ 를 입력하고 flag를 입력한다면,

notes ->./ -> flag 이런 식으로 접속할 수 있는 것이다.

 

 

 

 

3. 공격하기

 

결국 notes라는 디렉터리를 기준으로 상위로 이동flag 파일탈취할 수 있는 아주 간단한 문제이다.

 

웹사이트에서 download 부분의 filename에 '../flag'를 입력한다면 flag파일을 다운로드할 수 있다.

 

 

 

 

 

 

결국 flag 값은 HACKCAMP {sup3 r_dup3 r_fast_and_c0 nvenient_KTX_bBUShUNGbBASHuNg}가 된다.

 

 

 

방문해 주셔서 감사합니다!

반응형

💡 중요한 안내 드려요!

제가 아직 시간이 부족해서, 일부 기기에서 화면 너비 관련 오류가 발생할 수 있습니다. 😅

혹시 화면이 잘 보이지 않거나, 불편한 부분이 있으면 컴퓨터에서 접속하시면 더욱 원활하게 이용하실 수 있어요! 💻

그리고, 만약 오류를 발견하셨다면, 아래 버튼을 눌러 주시면 바로 오류가 제보됩니다. 제보는 아주 간단하고, 저에게 큰 도움이 돼요! 😊👍

LAZOGI Editor을 바로 실행하여 여러 코드를 온라인에서 실행 할 수 있어요.
메모 기능을 사용하여 공부한 내용을 편리하게 정리하고 온라인에 저장 할 수 있어요.
원탭으로 다크모드로 전환 할 수 있어요.
아직 오류가 있을 수 있어요.