CTF

[9월 26일] CTF_WebMachine: N7

ljm 2025. 9. 26. 09:13

mac 주소 확인

 

 

 

arp-scan

 

 

 

80포트 오픈

 

 

 

http 접속

 

 

 

하위 디렉토리 스캔

 

 

 

 

/exploit.html 접속

 

 

 

 

view-source에서 'CSRF Poc' 라는것을 발견

 

 

 


CSRF (Cross-Site Request Forgery)

: 크로스 사이트 요청 위조공격

 

  • 목표: 사용자의 권한을 훔치지 않고, 그 권한으로 액션을 실행하는 것.
  • 핵심: 웹 브라우저는 사용자가 로그인해둔 사이트(은행, 쇼핑몰 등)에 요청을 보낼 때, 인증 정보(쿠키)를 묻지도 따지지도 않고 자동으로 함께 보낸다.
  • 공격: 공격자는 이 자동 전송되는 쿠키를 이용해, 피해자가 무심코 열어본 다른 웹페이지에 위장된 요청을 숨겨 놓는다.

내가 은행 앱에 로그인(쿠키 저장) 해 놓은 상태에서, 해커가 보낸 수상한 문자(악성 웹페이지)를 실수로 누르면, 내 은행 계좌로부터 해커에게 이체되는 요청이 나도 모르게 은행 서버로 보내지는 것과 같다.


PoC (Proof of Concept) 의 역할

PoC는 위 공격이 실제로 가능하다는 것을 가장 간단하게 보여주는 코드 조각이다.

  • 주요 형태:
    • <img src="악성 요청 URL"> 태그: 이미지를 로드하려는 것처럼 위장하여, 실제로는 서버에 악성 요청을 보낸다. 이미지의 src에 공격 대상 사이트의 비밀번호 변경 URL 등을 넣는다.
    • 숨겨진 폼: 눈에 보이지 않는 폼을 만들고 자바스크립트로 자동 제출하게 한다.

 

 

 

exploit.html을 내 Kali에 다운받기

 

 

 

form - action 수정하기

 

 


 

 

<form action="http://192.168.16.48/profile.php" method="post" enctype="multipart/formdata">

 

이 코드가 초래하는 중요한 결과는 CSRF (크로스 사이트 요청 위조) 공격의 가능성이다.

  1. 만약 이 <form> 코드가 다른 웹사이트 (예: 공격자의 사이트)에 숨겨져 있고, 사용자에게 보이지 않게 자동 제출되도록 만들어진다면 (예: display:none; + 자동 제출), 이는 완벽한 CSRF PoC가 될 수 있다.
  2. 사용자가 이 폼을 열었을 때, 사용자의 브라우저는 **192.168.16.48**에 요청을 보내면서 **로그인 **를 자동으로 함께 전송한다.
  3. 만약 profile.php가 파일 업로드 기능을 통해 사용자의 프로필 사진을 변경하거나, 악의적인 파일을 업로드하여 ** (원격 코드 실행)**를 유발할 수 있는 취약한 스크립트라면, 이 $\text{PoC}$는 매우 심각한 공격을 초래할 수 있다.

결론적으로, 이 코드는 특정 내부 주소로 파일 업로드가 가능한 요청을 유도하는 강력한 도구가 될 수 있다.

 


 

 

192.168.16.97:8000/exploit.html 접속

 

 

 

 

FLAG의 일부분을 발견

 

 

 

 

view-source 에서 단서 찾아보기

 

 


 

단서를 더 이상 발견할 수 없어서 페이지를 조금 더 분석 해보기로했다.

 

ZAProxy 실행

 

zaproxy 실행

 

 

 

Attack → Active Scan ..

 

 

 

Alerts 에서 여러 취약점 확인 가능

 

 

 

break 버튼

 

 

 

웹에서 submit 누르면 break 가능 (burp suite의 intercept 기능)

 

 

 

 

뭔가 키와 값의 문자열 발견

 

 

 

 


 

ZAProxy에서 찾아봐도 더 이상의 단서가 발견할 수 없었음(gobuster/dirb 등)

다른 숨겨진 파일이 있는지 찾기 위해 Box에 접근해보기로 함

 

Box로 로그인하기 위한 계정과 비밀번호를 알 수 없으므로 초기화를 진행하기로함

 

 

N7 box 를 재부팅하면서 e 를 누르면 다음과 같은 화면

 

 

 

rw 읽고쓰기 권한 부여 후에 옵션으로 init=/bin/bash 추가 → 시작되면서 /bin/bash를 실행

 

 

 

F10눌러서 적용 후 재부팅

 

 

 

root/1234 설정 후에 exec /sbin/init 실행 → /bin/bash가 실행됌

 

 

 

 

root/1234 로그인

 

 

 

 

스캔해도 보이지 않았던 enter_network 발견

 

 

 


 

Burp Suite 실행

 

 

프록시 켜고 /enter_network 접속

 

 

 

192.168.16.48/enter_network 에서 SEND → intercept (HTTP history에서 Save item을 눌러서 결과를 파일로 저장)

 

 

 

 

데이터베이스의 구조(스키마) 정보를 파악하고, 취약점의 존재 여부를 확인하기 위해 sqlmap 명령어 실행

 

sqlmap: 취약점을 자동으로 탐지하고 악용하는 오픈 소스 침투 테스트 도구

 

 

다운받은 'testenter' 파일로 SQLmap 명령어 실행

 

 

 

post 파라미터인 user가 취약점 있다는것을 확인. 다른 것들도 확인해본다

 

 

 

최근 사용 유저가 root@localhost 였다는 것을 확인

 

 

 


 

 

DB 내용을 추출하기 위해 -dump 옵션을 붙여서 실행

 

 

 

 

delay response에 대해 optimize를 허용 → 시간 기반 블라인드 SQL 인젝션 (Time-based Blind SQL Injection) 기법을 사용 *최적화된 지연시간 설정*

 

 

 

 

FLAG 획득 완료 : FLAG{N7 : KSA_01}

 

 


 

 

 

웹에서 로그인해도 로그인이 되지않는다 (아까 봤듯이, 데이터를 넘겨받는 기능은 웹페이지에 구현되어 있지않음)

 

 

 


 

# Walkthough 2

enter_network 페이지의 쿠키값을 조작하는 방법

 

/enter_network 밑에 admin.php 발견

 

 

 

admin 전용 인터페이스라는 단서 발견

 

 

 

 

admin.php 를 intercept 하여 Repeater에서 쿠키값을 확인해보자

 

 

 

 

role 값의 base64로 디코딩 된 값을 확인

 

 

 

 

md5으로 cracking 결과 admin 이라는 사실 확인

 

 

 

 

role의 값을 admin이라고 설정하고 send 한 결과, Response에서 플래그값의 뒷부분인 'KSA_01}' 이라는 값 확인 → 아까 발견했던 단서들과 합치면 FLAG{N7:KSA_01}

 

'CTF' 카테고리의 다른 글

[9월 25일] CTF_CyberSploit: 2  (0) 2025.09.25
[9월 25일] CTF_CyberSploit: 1  (0) 2025.09.25
[9월 24일] CTF_Corrosion  (0) 2025.09.24
[9월 22일] CTF_Jetty  (0) 2025.09.24
[9월 19일] CTF_Chronos: 1  (0) 2025.09.19