이번 문제는 조금 헷갈렸는데 우선 데이터베이스에서 무언가를 찾아야 하는 문제이다.
그런데 다른 데이터베이스에 있는 flag_($hash) 테이블을 가져와야 한다고 되어있다.
즉, flag_% 테이블을 모든 데이터베이스를 뒤져서 가져와야 한다는 뜻이다.
우선 첫 시도는 union select를 해보았는데 이것으로 해답을 찾기는 어려울듯 했다.
그래서 구글링으로 찾아본 결과 sqlite에서 테이블을 불러오는 명령어를 찾아내었고
블라인드 SQLI와 같은 방식으로 하되 쿼리를 select sql from sqlite_master where tbl_name like 'flag_%'
으로 주게되면 sqlite_master 테이블에서 tbl_name, 즉 테이블명이 'flag_%' flag로 시작하는 모든 테이블을 select 할 수 있게 된다. 이를 length와 substr을 이용해 값을 찾아내면 된다.
우선 length를 사용해본 결과 쿼리가 잘 들어간다 길이를 찾아보니 무려 54 길이를 가지고 있다.
그 후 substr을 이용해 하던 방식대로 찾아내면 된다. 프로그램을 이용하여도 길이가 길어서 오래걸렸다.
결과 값은 FLAG{ea5d3bbdcc4aec9abe4a6a9f66eaaa13} 가 나왔다.
그래서 ?pw=FLAG{ea5d3bbdcc4aec9abe4a6a9f66eaaa13} 를 입력해주면 클리어
'3. 웹 애플리케이션 취약점 진단 > Lord of Sql Injection' 카테고리의 다른 글
lord of sql injection 39번 - banshee (0) | 2023.12.22 |
---|---|
lord of sql injection 38번 - manticore (0) | 2023.12.22 |
lord of sql injection 37번 - chupacabra (0) | 2023.12.22 |
lord of sql injection 36번 - cyclops (0) | 2023.12.22 |
lord of sql injection 35번 - godzilla (0) | 2023.12.22 |