union injection을 통해서 flag가 담긴 테이블을 찾고 flag를 추출하는 문제이다.
- 계정 정보를 알 수 있음. 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 |