(Lord of SQLInjection) POLTERGEIST 문제입니다.
먼저 제공되는 소스코드를 살펴보면 필터링은 db, poltergeist.db를 필터링하고 있습니다.
값은 pw를 받고 있고 결과값을 Hello 뒤에 붙혀 출력해주고 있습니다
pw를 찾으면 문제가 해결되는 문제라고 하는데
주석에 친절하게 pw는 FLAG{ }구조이며, member 테이블에 없다고 합니다.
즉 union을 활용하고 MySQL에서 사용하는 information_schema를
SQLite에서는 어떻게 사용하는지를 묻는 문제로 보입니다.
SQLite에서는 information_schema가 없고 대신 sqlite_master이 존재합니다.
위 내용을 토대로 전달할 값을 구성해보면 아래와 같이 구성할 수 있습니다.
?pw=-1' union select tbl_name from sqlite_master-- -
문제사이트에 값을 전달해보면
테이블의 이름이 출력되었습니다.
테이블의 이름을 알았으니 이제 컬럼의 이름도 확인해야 합니다.
컬럼의 이름을 where 조건으로 추가해 값을 구성해주면
?pw=-1' union select sql from sqlite_master where tbl_name='flag_70c81d99'-- -
컬럼의 이름또한 결과로 확인할 수 있습니다.
테이블의 이름과 컬럼의 이름을 확인했으니 값을 조회해보면
?pw=-1' union select flag_0876285c from flag_70c81d99-- -
FLAG{ }구조로 된 값을 찾았습니다.
찾은 FLAG를 pw의 값으로 문제사이트에 전달해보면
문제가 해결되었습니다!
'Wargame(Web) > Lord of SQLInjection' 카테고리의 다른 글
(Lord of SQLInjection) banshee 문제 (0) | 2022.12.04 |
---|---|
(Lord of SQLInjection) manticore 문제 (0) | 2022.12.04 |
(Lord of SQLInjection) chupacabra 문제 (0) | 2022.12.04 |
(Lord of SQLInjection) cyclops 문제 (0) | 2022.12.03 |
(Lord of SQLInjection) godzilla 문제 (0) | 2022.12.01 |