Logical

2026. 2. 14. 22:22·Dreamhack 워게임/Lv.1
반응형

문제설명

간단한 논리를 깨다.


코드분석

hidden_dir = '/dir_' + str(randint(1, 99999999999999999))
  • hidden_dir 은 /dir_???값으로 이뤄져있음. ???은 1~99999999999999999 사이값
@app.route('/', methods=['GET','POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    elif request.method == 'POST':
        if not login_check():
            return render_template('login.html', error='Something wrong with the login details. Try again.')
        else:
            return redirect(hidden_dir)
    else:
        return make_response(405)
  • login_check() 가 false면 login.html을 login_check()이 true면 redirct(hiine_dir)을 출력
@app.route(hidden_dir)
def hidden_endpoint():
    return render_template('hidden.html', FLAG=open('flag.txt').read())
  • hidden_dir 경로 요청 시 hidden.html 출력하고 flag 획득
def login_check():
    uname = request.form.get('uname', '')
    password = request.form.get('password', '')
    if not uname and not password:
        return False
    connection = connect("logical.db")
    cursor = connection.cursor()
    query = ("SELECT uname, password FROM users WHERE password = '{}'").format(md5(password.encode()).hexdigest())
    usrname = cursor.execute(query).fetchall()
    name = usrname[0][0] if usrname and usrname[0] and usrname[0][0] else ''
    return name == uname
  • 로그인 체크 검사
  • uname과 password 입력받음 / 없으면 공백입력
  • uname과 password 둘 다 비어있으면 False 반환
  • uname과 password 입력받으면 logical.db 연결하고 실행
  • query는 password를 인코딩하고 md5로 해시한 다음 16진수 문자열로 만든 값
  • usrname은 query문 실행한 값
  • name은 usrname이 있고, usrname[0]이 존재하고, usrname[0][0]이 존재하면 usrname[0][0]을 넣고, 아니라면 공백 넣음
  • 최종 uname과 name 비교

취약점 분석

  • uname을 쿼리 조건에 사용하지 않음
  • 쿼리 결과가 없을 때(공백일 때) usrname값도 ' '(공백)으로 name도 ' '(공백) uname이 ' '(공백)으로 로그인 우회 가능

익스플로잇

먼저 POST 요청을 가로챔

uname은 공백으로 해주고 password만 전송해주면 hidden_dir 획득

→ DB에는 아직 아무런 데이터가 없기에 password로 아무거나 보내도 쿼리 결과가 없음

 

즉,

name == uname이 '' == ''	// True

login_check() 함수가 우회됨

hidden_dir획득

반응형

'Dreamhack 워게임 > Lv.1' 카테고리의 다른 글

Pearfect Markdown  (0) 2026.02.15
Simple Note Manager  (0) 2026.02.15
baby-ai  (0) 2026.02.14
what-is-my-ip  (0) 2026.02.14
Dream Badge  (0) 2026.02.09
'Dreamhack 워게임/Lv.1' 카테고리의 다른 글
  • Pearfect Markdown
  • Simple Note Manager
  • baby-ai
  • what-is-my-ip
y3onbug5
y3onbug5
y3onbug5 님의 블로그 입니다.
  • y3onbug5
    y3onbug5 님의 블로그
    y3onbug5
  • 전체
    오늘
    어제
    • 분류 전체보기 (167) N
      • Alpacahack (19) N
      • Dreamhack 워게임 (49)
        • Lv.1 (40)
        • Lv.0 (4)
        • LV.2 (3)
        • LV.3 (2)
      • [Dreamhack] Web Beginner (3)
      • [Dreamhack] Web Hacking (17)
        • 웹 기초 지식 (4)
        • Cookie & Session (2)
        • Cross-Site Scripting(XSS) (1)
        • Cross-Site Request Forgery (1)
        • SQL Injection (4)
        • NoSQL Injection (2)
        • Command Injection (1)
        • File Vulnerability (1)
        • Server-Side Request Forgery (1)
      • [Dreamhack] Web Hacking Client-Side (10)
        • XSS Filtering Bypass (2)
        • Content Security Policy (CSP) (2)
        • CSRF,CORS Bypass (2)
        • Client-Side Template Injection (CSTI) (1)
        • CSS Injection (1)
        • Relative Path Overwrite (RPO) (1)
        • DOM Vulnerability (1)
      • [Dreamhack] Web Hacking Server-Side (15)
        • SQL Injection Advanced (4)
        • SQL Injection Advanced - Fingerprinting (2)
        • NoSQL Injection Advanced (3)
        • Command Injection Advanced - Web Servers (3)
        • File Vulnerability Advanced - Web Server (3)
      • [Dreamhack]Black-Box Penetration Testing (15)
        • DreamCommunity Penetration Testing (11)
      • [Dreamhack] LLM (2)
        • [Dreamhack] LLM과 프롬프트 엔지니어링 (2)
      • Web 공부 (4)
      • Web Study (15)
      • JavaScript (17)
        • 기초 (12)
        • 중급 (4)
      • 웹 개발(Flask) (0)
      • [Security First] web 기초교육 (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DreamHack
    web
    alpacahack
    webstudy
    JavaScript
    드림핵
    webhacking
    hacking
    CSRF
    cve
    xss
    JS
    LLM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
y3onbug5
Logical
상단으로

티스토리툴바