본문 바로가기

Training/Dreamhack

[WEB] baby-union 문제 풀이

union injection을 통해서 flag가 담긴 테이블을 찾고 flag를 추출하는 문제이다.

  1. 계정 정보를 알 수 있음. flag 테이블 컬럼에 flag가 나눠서 저장되어있음. dbms은 mysql
init.sql

INSERT INTO users (uid, upw, descr) values ('admin', 'apple', 'For admin');
INSERT INTO users (uid, upw, descr) values ('guest', 'melon', 'For guest');
INSERT INTO users (uid, upw, descr) values ('banana', 'test', 'For banana');
FLUSH PRIVILEGES;

CREATE TABLE fake_table_name (
  idx int auto_increment primary key,
  fake_col1 varchar(128) not null,
  fake_col2 varchar(128) not null,
  fake_col3 varchar(128) not null,
  fake_col4 varchar(128) not null
);

INSERT INTO fake_table_name (fake_col1, fake_col2, fake_col3, fake_col4) values ('flag is ', 'DH{sam','ple','flag}');
 
app.py

            cur.execute(f"SELECT * FROM users WHERE uid='{uid}' and upw='{upw}';")
로그인 시 실행되는 구문

 

 

1. union select 구문이 작동함을 확인

 

2.생성된 모든 테이블 정보가 있는 테이블에서 테이블명을 추출한다. onlyflag 테이블에 flag가 있을 것 같다.

 

3. 테이블명이 onlyflag인 조건으로 컬럼명을 추출한다.

4. flag 획득

Translate

'Training > Dreamhack' 카테고리의 다른 글

[WEB] Paginator v2 문제 풀이  (0) 2025.02.25
[WEB] baby-sqlite 문제 풀이  (0) 2024.11.19
[WEB] mongoboard 문제 풀이  (0) 2024.05.28
[WEB] Addition calculator 문제 풀이  (0) 2024.05.27
[WEB] easy-login 문제 풀이  (0) 2024.05.21