Web Hacking/LOS

Lord of SQL Injection - poltergeist

Lucvs 2021. 10. 3. 20:56

 

// Flag is in `flag_{$hash}` table, not in `member` table. Let's look over whole of the database

 

Flag는 member 테이블이 아니라 flag_{$hash} 라는 테이블에 존재한다고 한다. 메타데이터를 써야할 분위기다.

 

MySQL에서는 information_schema 라는 메타데이터를 사용하였다. SQLite 는 sqlite_master 라는 메타데이터를 사용한다. sqlite_master를 이용하여 테이블의 이름을 불러와 보자. group_concat 함수를 사용하면 원하는 데이터를 모두 출력할 수 있다.(https://lucvs.xyz/entry/Real-World-SQL-Injection, 참고)

 

pw=' union select group_concat(tbl_name) from sqlite_master--

member 테이블과 flag_70c81d99 테이블이 등장하였다. 테이블의 형식도 알맞다. 우리가 사용할 테이블은 flag_70c81d99 이다.

 

이 flag_70c81d99 테이블에서 모든 데이터를 뽑아보자.

 

 

pw=' union select * from flag_70c81d99--

FLAG 가 아름답게 등장해주었다. 해시값처럼 생겼다. 이 플래그 값을 pw 에 입력해주면 된다.