모의해킹 스터디 CTF 문제 - Admin is Mine

2024. 11. 19. 06:58·모의해킹/모의해킹 스터디

이번 문제는 admim계정으로 로그인하는 문제이다.

 

1번째 방법

1. 알고 있는 계정으로 로그인

request 값

GET으로 전달하고

response ok

해당 값으로 응답한다는 것을 알 수 있다.

 

2. Intercept나 Repeater을 활용하여 userId를 admin으로 변경 시

response fail

응답 값이 fail로 되는 걸 알 수 있다.

 

이를 'ok' 로 바꿔 보려고 한다.

 

3. Intercept에서 Intercept is on을 선택 -> 알고 있는 계정으로 로그인 -> UserId를 admin으로 수정

request 값 수정

 

4. 오른쪽 마우스 클릭 -> Do intercept -> Response to this request 선택 후 -> Forward 선택

오른쪽 마우스 클릭 -> Do intercept -> Response to this request 선택 후 -> Forward 선택

 

5. Response result 값을 'ok'로 변경 -> Forward -> Intercept is off

Response result 값을 'ok'로 변경 -> Forward -> Intercept is off

 

6. HTTP history에서 Response 확인

HTTP history에서 Response 확인

 

2번째 방법

위의 1 ~ 4번 까지 똑같이 따라한 후

 

5. 위의 5번에서 Intercept is on 인 상태로 실행

6. 오른쪽 마우스 클릭 -> Do intercept -> Response to this request 선택 후 -> Forward 선택

오른쪽 마우스 클릭 -> Do intercept -> Response to this request 선택 후 -> Forward 선택

 

7. Response에 해당 script 삭제 -> Intercept is off

Response에 해당 script 삭제 -> Intercept is off

 

8. HTTP history에 index.php 선택 -> 하단 Original respinse를 Edited response로 변경 후 확인

HTTP history에 index.php 선택 -> 하단 Original respinse를 Edited response로 변경 후 확인

  • 7번에서 Forward -> Forward ->Intercept is off 해도 가능

로그인 성공

 

3번째 방법

1. 구글 개발자 도구 -> sources ->  login.js에서 if 구문 주석처리 후 주석 상단에 location.href = "index.php"; 입력 후 ID: admin PW: 1234로 Sing in

구글 개발자 도구 -> sources -> login.js에서 if 구문 주석처리 후 주석 상단에 location.href = "index.php"; 입력 후 ID: admin PW: 1234로 Sing in

 

2. Burp suite HTTP history에서 index.php 확인

Burp suite HTTP history에서 index.php 확인

 

4번째 방법

1. 구글 개발자 도구 -> sources -> login.js에서 resultData == "ok"를 fail로 변경후 ID: admin PW: 1234로 Sing in

구글 개발자 도구 -> sources -> login.js에서 resultData == "ok"를 fail로 변경 후 ID: admin PW: 1234로 Sing in

 

2. Burp suite HTTP history 에서 index.php 확인

Burp suite HTTP history 에서 index.php 확인

 

5번째 방법

1. 구글 개발자 도구 -> sources -> login.js에서 else 구문에 location.href = "index.php"; 작성 후 ID: admin PW: 1234로 Sing in

구글 개발자 도구 -> sources -> login.js에서 else 구문에 location.href = "index.php"; 작성 후 ID: admin PW: 1234로 Sing in

 

2. Burp suite HTTP history 에서 index.php 확인

Burp suite HTTP history 에서 index.php 확인

후기

  • 이번 문제는 SQL 인젝션을 시도해본 결과 통하지 않았다. 그래서 찾아보던 중 javascript가 보이는 걸 확인하고 javascript 를 활용하는 방법 위주로 찾아보았다.
  • javascript코드를 활용해본 결과 url 변수에 비밀번호를 지웠을 때 result 값이 fail이 나는 것으로 미뤄보아 사용자가 입력한 ID, PW 값을 받아 백단에서 처리해 주는 것 같았다. 해당 javascript코드로 봤을 때
더보기

<?php
header('Content-Type: application/json');

// 데이터베이스 연결 설정
$host = 'localhost';
$db = 'database_name';
$username = 'username';
$password = 'password';

// 연결 생성
$conn = new mysqli($host, $username, $password, $db);

// 연결 확인
if ($conn->connect_error) {
    die(json_encode(['result' => 'error', 'message' => 'Database connection failed']));
}

// 사용자 입력받기
$userId = isset($_GET['userId']) ? $_GET['userId'] : '';
$userPw = isset($_GET['userPw']) ? $_GET['userPw'] : '';

// SQL 쿼리 준비
$stmt = $conn->prepare("SELECT password FROM users WHERE userid = ?");
$stmt->bind_param("s", $userId);
$stmt->execute();
$stmt->store_result();

// 사용자 존재 여부 확인
if ($stmt->num_rows > 0) {
    $stmt->bind_result($hashedPassword);
    $stmt->fetch();

    // 비밀번호 확인
    if (password_verify($userPw, $hashedPassword)) {
        // 로그인 성공
        echo json_encode(['result' => 'ok']);
    } else {
        // 비밀번호 불일치
        echo json_encode(['result' => 'fail']);
    }
} else {
    // 사용자 없음
    echo json_encode(['result' => 'fail']);
}

$stmt->close();
$conn->close();
?>

       이런 로직으로 PHP코드가 구현되지 않았을까 예상해 보았다.

        확인해보니 여기에 추가로 세션을 먼저 생성하고 코드를 작성해논 상태였다.

  • 해당 방법 뿐만 아니라 더 다양한 방법이 있는지 생각해 봐야겠다.
728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

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

모의해킹 스터디 6주차 정리  (0) 2024.11.21
모의해킹 스터디 CTF 문제 - Pin Code Crack  (1) 2024.11.20
모의해킹 스터디 CTF 문제 - PIN CODE Bypass  (0) 2024.11.18
모의해킹 스터디 CTF 문제 - Get Admin  (0) 2024.11.18
모의해킹 스터디 5주차 정리  (0) 2024.11.15
'모의해킹/모의해킹 스터디' 카테고리의 다른 글
  • 모의해킹 스터디 6주차 정리
  • 모의해킹 스터디 CTF 문제 - Pin Code Crack
  • 모의해킹 스터디 CTF 문제 - PIN CODE Bypass
  • 모의해킹 스터디 CTF 문제 - Get Admin
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 :
  • 태그

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

티스토리툴바