본문 바로가기
Hacking/LOS : Lord of SQLInjection

LOS : poltergeist

by newbie22 2020. 11. 9.

< poltergeist 문제 모습 >

문제 코드를 보면 poltergeistFlag를 추출해내야 하는 문제입니다. 또한 친절하게 주석으로 flag_{$hash} 테이블에 존재한다고 합니다. 

 

즉, Flag를 알아내기전에 우선 알아야 하는 정보는 다음과 같습니다.

 

1. flag_{$hash}의 정확한 테이블 이름

2. 해당 테이블에 있는 컬럼 확인하기 

 

mysql에서는 information_schema 테이블 해당 정보가 저장된다면 sqlite에서는 sqlite_master 테이블에서 해당 정보가 저장됩니다. 

 

sqlite_master 테이블에는 name이라는 컬럼이 존재하는데 해당 컬럼에는 해당 db에 존재하는 테이블의 이름들이 저장되어있습니다. 이를 이용하면 테이블의 정확한 이름을 얻을 수 있습니다.

 

테이블 이름 얻기 : ?pw=' union select name from sqlite_master where name like "flag%"--+-

이제 정확한 테이블의 이름을 얻었으므로 이제 커럼의 이름을 확인 할 차례입니다.

 

sqlite_master에서는 sql 컬럼이 존재하는 데 이는 테이블을 생성할 때 사용한 쿼리를 저장합니다.

 

테이블에 있는 컬럼을 확인하기 : ?pw=' union select sql where sqlite_master where name='flag_70c81d99'--+-

 

 

다행이도 하나의 컬럼만이 존재합니다. 따라서 flag_70c81d99 테이블읠 flag_0876285c 컬럼의 값을 가져오면 될거라고 판단됩니다.

 

두둔~~ 드디어 플래그를 획득하였습니다.

 

< 클리어 >

'Hacking > LOS : Lord of SQLInjection' 카테고리의 다른 글

LOS : revenant  (0) 2020.11.14
LOS : nessie  (0) 2020.11.11
LOS : banshee  (0) 2020.11.08
LOS : manticore  (0) 2020.11.07
LOS : chupacabra  (0) 2020.11.06