(Lord of SQLInjection) zombie 문제입니다.
이전 ouroboros문제와 비슷한 코드입니다.
처음에는 콰인쿼리를 이용한 문제인가 싶어 여러 시도를 했는데
필터링을 보면 rol up join ace @ 가 필터링에 걸려 replace를 사용할수 없어
다른 방식이 필요하다는 것을 알았습니다.
먼저 ouroboros처럼 pw에 값이 존재하지 않는지 확인하기 위해
pw='||'1'='1 을 전달해보면
True임에도 어떠한 값도 출력되지 않는 것으로 pw에 값이 존재하지 않는 것을 확인했습니다.
일단 ouroboros와 다르게 언더바(_) 를 필터링 하고 있지 않아 infomation_schema를 사용해
하나씩 알아봤습니다.
가장먼저 테이블의 이름확인 가능한 아래 코드를 이용해 확인해보면
'union select table_name from information_schema.tables%23
쿼리가 select pw 여서 select table_name을 사용해도 하나의 값만 출력해주고 있습니다.
다른 값을 확인하기 위해 조건을 추가해 전달해보면
'union select table_name from information_schema.tables where table_name!='character_sets'%23
and table=' 테이블 이름 '으로 조건을 계속 추가하는데 노가다 작업이라 옆에서 보던 지인이 함수
한가지를 알려주었습니다.
group_concat() 이라는 함수로
나뉘어져 있는 값들을 콤마(,) 로 구분해 묶어서 하나로 출력해주는 함수라고 합니다.
이를 이용해서 익스플로잇 코드를 작성해보면 아래와 같이 작성할 수 있습니다.
'union select group_concat(table_name) from information_schema.tables%23
모든 table_name이 출력되었습니다.
너무 많은 양이여서 어디를 살펴야할지 모르는 상황이라 힌트를 받았습니다.
우리가 원하는 문제해결을 위한 출력은 pw를 찾는 것이며 pw는 비어있어 ouroboros처럼 쿼리 그자체를 가져와서
문제를 해결해야 합니다.
그러면 쿼리 그자체를 저장하거나 가지고 있을 가능성이 있는 테이블이 있을거라는 힌트였습니다.
이와 관련된 테이블은
PROCESSLIST라는 테이블입니다. 이에대해 검색해보면
mysql에서 현재 동작중인 쿼리 정보를 출력할수 있는 명령어와 관련되었다고 합니다.
PROCESSLIST라는 테이블의 컬럼정보를 다시 information으로 확인해보면
'union select group_concat(column_name) from information_schema.columns where table_name='PROCESSLIST'%23
총 8가지의 컬럼이 확인되는데 우리는 쿼리 그자체를 출력해야하니
예상되는 컬럼은 DB, COMMAND, STATE , INFO 입니다.
하나씩 확인해보면
info에서 쿼리 그자체를 저장하고 있는걸을 확인할 수 있었습니다.
쿼리그자체를 출력했으나 우리가 원하는건 pw만 입력해야하기에 문제가 해결되지 않았습니다.
즉 앞에 저장된 select pw from prob_zombie where pw=' 를 제외시켜야 합니다.
즉 'union select info 부분만 필요합니다.
이를 위해 이전 LOS문제들에서 사용해 왔던 substr을 이용해 익스플로잇 코드를 구성하면
'union select substr(info, 38, 71) from information_schema.processlist%23
문제가 해결되었습니다!
Reference
'Wargame(Web) > Lord of SQLInjection' 카테고리의 다른 글
(Lord of SQLInjection) cthulhu 문제 (0) | 2022.11.30 |
---|---|
(Lord of SQLInjection) alien 문제 (0) | 2022.11.28 |
(Lord of SQLInjection) ouroboros 문제 (0) | 2022.11.21 |
(Lord of SQLInjection) phantom 문제 (0) | 2022.11.21 |
(Lord of SQLInjection) frankenstein 문제 (0) | 2022.11.17 |