Skip to main content
Glama
foxibu

MCP Kali Server

by foxibu
PROBLEM_SOLVING_PROMPTS.md19.9 kB
# CTF 문제 풀이 프롬프트 가이드 이 문서는 각 CTF 분야별로 AI에게 문제 풀이를 요청할 때 사용할 수 있는 효과적인 프롬프트 템플릿을 제공합니다. ## 목차 - [암호학 (Cryptography)](#암호학-cryptography) - [포렌식 (Forensics)](#포렌식-forensics) - [클라우드 보안 (Cloud Security)](#클라우드-보안-cloud-security) - [Web3 & 블록체인](#web3--블록체인) - [Pwnable](#pwnable) - [리버싱 (Reversing)](#리버싱-reversing) - [웹 해킹 (Web)](#웹-해킹-web) --- ## 암호학 (Cryptography) ### 1. RSA 문제 풀이 프롬프트 ``` RSA 암호학 문제를 풀어야 해. 다음 정보가 주어졌어: 문제 설명: [문제 설명 붙여넣기] 주어진 값: - n (모듈러스): [N 값] - e (공개 지수): [e 값] - c (암호문): [암호문 값] 목표: 평문을 복호화해서 플래그를 찾아야 해. 단계별로 다음과 같이 진행해줘: 1. 먼저 세션을 생성하고 2. factordb_query()로 N이 이미 인수분해되어 있는지 확인 3. 안되면 rsa_attack()으로 모든 공격 시도 4. 성공하면 복호화된 평문 출력 각 단계의 결과를 보여주고, 플래그를 찾으면 알려줘. ``` **실제 사용 예시:** ``` "Baby RSA" 문제를 풀어야 해. 주어진 값: - n: 85188995949975973882030588091827042986832597534618294804398478969133005944907116982056396054535842707589380954015865361051554526469116277628254426267757199 - e: 65537 - c: 34577152691579622127706154480884897287896805981872459257748376838912182049809506013649959599927732959113724699252882097865164533984706907700507149722179157 목표: 평문을 복호화해서 플래그를 찾아야 해. 단계별로 진행해줘: 1. create_analysis_session()으로 세션 생성 2. factordb_query(number=n)로 소인수분해 시도 3. 실패하면 rsa_attack()으로 Wiener, Fermat 등 모든 공격 시도 4. 성공하면 복호화된 평문을 출력하고 플래그 찾기 각 단계의 결과를 자세히 보여줘. ``` ### 2. 해시 크래킹 문제 프롬프트 ``` 해시 크래킹 문제야. 다음 해시값이 주어졌어: 해시: [해시값] 해시 타입: [MD5/SHA1/SHA256/등] 목표: 해시의 원본 평문을 찾아야 해. 다음과 같이 진행해줘: 1. 해시 타입을 확인하고 hashcat 모드 번호 결정 2. hashcat_crack()으로 rockyou.txt 사용해서 크래킹 시도 3. 실패하면 john_crack()도 시도 4. 크래킹된 평문 출력 빠르게 결과를 보여줘. ``` **실제 사용 예시:** ``` 다음 MD5 해시의 평문을 찾아야 해: 해시: 5f4dcc3b5aa765d61d8327deb882cf99 단계: 1. hashcat_crack(hash_value="5f4dcc3b5aa765d61d8327deb882cf99", hash_type="0", wordlist="/usr/share/wordlists/rockyou.txt") 2. 결과 없으면 john_crack()도 시도 3. 크래킹된 평문이 플래그인지 확인 결과를 바로 보여줘. ``` ### 3. 복합 암호학 문제 프롬프트 ``` 복잡한 암호학 문제야. 문제 설명은 다음과 같아: [문제 설명] 주어진 파일/데이터: - [파일1]: [설명] - [파일2]: [설명] 목표: [목표 설명] 다음 순서로 분석해줘: 1. 먼저 crypto_challenge_workflow() 프롬프트를 참고해서 문제 유형 파악 2. 사용된 암호 알고리즘 식별 3. 적절한 도구 선택 (RsaCtfTool, hashcat, sage 등) 4. 단계별로 공격 수행 5. 플래그 추출 각 단계마다 결과를 보여주고, 막히면 대안 방법 제시해줘. ``` ### 4. SageMath를 사용한 수학적 공격 프롬프트 ``` 타원 곡선 암호 / 격자 기반 암호 문제야. 문제: [문제 설명] 주어진 값: [파라미터들] SageMath를 사용해서 다음을 수행해줘: 1. 세션 생성 2. SageMath 스크립트 작성: - 주어진 파라미터로 수학적 구조 생성 - 취약점 분석 (약한 곡선, 작은 부분군 등) - 이산 로그 문제 해결 또는 격자 기반 공격 3. sage_execute()로 실행 4. 결과 해석하고 플래그 추출 각 단계의 수학적 원리도 간단히 설명해줘. ``` --- ## 포렌식 (Forensics) ### 1. 이미지 스테가노그래피 문제 프롬프트 ``` 이미지 파일에 숨겨진 플래그를 찾아야 해. 파일: [파일명] 파일 위치: [경로] 다음 순서로 분석해줘: 1. exiftool_analyze()로 메타데이터 확인 2. steghide_extract()로 스테가노그래피 추출 시도 (비밀번호 없이) 3. 실패하면 일반적인 비밀번호 시도: "password", "flag", "secret", "admin" 4. binwalk_analyze()로 숨겨진 파일 찾기 5. 필요하면 LSB 분석 각 단계의 출력을 보여주고, 플래그를 찾으면 알려줘. ``` **실제 사용 예시:** ``` "hidden_message.jpg" 파일에 플래그가 숨겨져 있어. 파일 위치: /tmp/hidden_message.jpg 단계별로: 1. exiftool_analyze(file_path="/tmp/hidden_message.jpg") 2. steghide_extract(cover_file="/tmp/hidden_message.jpg", passphrase="") 3. 실패하면: - steghide_extract(cover_file="/tmp/hidden_message.jpg", passphrase="flag") - steghide_extract(cover_file="/tmp/hidden_message.jpg", passphrase="password") 4. binwalk_analyze(file_path="/tmp/hidden_message.jpg", extract=True, session_id=<session>) 모든 결과를 보여주고 플래그 찾아줘. ``` ### 2. 메모리 덤프 분석 프롬프트 ``` 메모리 덤프 파일 분석 문제야. 파일: [메모리 덤프 경로] OS: [Windows/Linux] 다음을 단계별로 수행해줘: 1. volatility_analyze(plugin="[os].info") - 시스템 정보 2. volatility_analyze(plugin="[os].pslist") - 프로세스 목록 3. 의심스러운 프로세스 찾기 4. volatility_analyze(plugin="[os].cmdline") - 명령줄 인자 확인 5. volatility_analyze(plugin="[os].filescan") - 흥미로운 파일 찾기 6. 필요하면 메모리에서 파일 추출 각 단계마다 중요한 발견사항을 요약해서 알려줘. ``` **실제 사용 예시:** ``` Windows 메모리 덤프 분석: 파일: /tmp/challenge.dmp 순서: 1. volatility_analyze(dump_file="/tmp/challenge.dmp", plugin="windows.info") 2. volatility_analyze(dump_file="/tmp/challenge.dmp", plugin="windows.pslist") 3. 의심스러운 프로세스 PID 확인 4. volatility_analyze(dump_file="/tmp/challenge.dmp", plugin="windows.cmdline") 5. volatility_analyze(dump_file="/tmp/challenge.dmp", plugin="windows.filescan") | grep -i "flag" 6. 플래그가 있는 파일 찾기 의심스러운 프로세스와 플래그 위치를 알려줘. ``` ### 3. 파일 카빙 문제 프롬프트 ``` 손상된 디스크 이미지에서 파일을 복구해야 해. 파일: [디스크 이미지 경로] 찾아야 할 파일 타입: [jpg, png, pdf, doc 등] 다음을 수행해줘: 1. 세션 생성 2. foremost_carve()로 파일 카빙 3. 복구된 파일 목록 확인 4. 각 파일을 exiftool_analyze()로 분석 5. 이미지 파일이면 tesseract_ocr()로 텍스트 추출 6. 플래그 찾기 복구된 파일 개수와 플래그 위치를 알려줘. ``` ### 4. 펌웨어 분석 프롬프트 ``` IoT 펌웨어 파일 분석 문제야. 파일: [펌웨어 경로] 분석 순서: 1. binwalk_analyze(file_path="<path>") - 파일 시그니처 확인 2. binwalk_analyze(file_path="<path>", extract=True, session_id=<session>) - 파일시스템 추출 3. 추출된 파일 탐색 4. 설정 파일, 스크립트, 바이너리 찾기 5. 하드코딩된 비밀번호, API 키, 플래그 찾기 각 단계의 발견사항을 정리해서 보여줘. ``` --- ## 클라우드 보안 (Cloud Security) ### 1. AWS S3 버킷 열거 프롬프트 ``` AWS S3 버킷 취약점 문제야. 대상: [회사명 또는 도메인] 다음을 수행해줘: 1. 일반적인 버킷 명명 규칙으로 버킷 이름 추측: - [company]-backups - [company]-data - [company]-logs - [company]-assets - [domain]-files 2. 각 버킷에 대해 s3_bucket_scan() 실행 3. 접근 가능한 버킷 찾기 4. 버킷 내용 나열하고 민감한 파일 찾기 5. 플래그 파일 다운로드 발견된 버킷과 내용을 정리해서 보여줘. ``` **실제 사용 예시:** ``` "acmecorp" 회사의 S3 버킷을 찾아야 해. 시도할 버킷 이름: 1. s3_bucket_scan(bucket_name="acmecorp-backups") 2. s3_bucket_scan(bucket_name="acmecorp-data") 3. s3_bucket_scan(bucket_name="acmecorp-logs") 4. s3_bucket_scan(bucket_name="acmecorp-public") 5. s3_bucket_scan(bucket_name="acmecorp-assets") 접근 가능한 버킷이 발견되면: - 파일 목록 확인 - .env, backup, flag, secret 등의 키워드가 포함된 파일 찾기 - 플래그 다운로드 결과를 요약해서 보여줘. ``` ### 2. 클라우드 메타데이터 SSRF 공격 프롬프트 ``` 웹 애플리케이션에 SSRF 취약점이 있어서 클라우드 메타데이터 서비스에 접근할 수 있어. 취약한 엔드포인트: [URL] 클라우드 제공자: [AWS/GCP/Azure] 다음을 수행해줘: 1. 메타데이터 서비스 접근 확인 2. cloud_metadata_query()로 주요 엔드포인트 조회: AWS의 경우: - "" (루트) - "iam/security-credentials/" - "iam/security-credentials/[role-name]" 3. 임시 자격증명 획득 4. aws_enumerate()로 리소스 열거 5. 플래그 찾기 각 단계의 응답을 보여주고 자격증명을 정리해줘. ``` ### 3. AWS IAM 권한 상승 프롬프트 ``` AWS 자격증명을 획득했어. Access Key ID: [키] Secret Access Key: [비밀키] 다음을 수행해줘: 1. aws_enumerate()로 현재 권한 확인: - s3 버킷 목록 - ec2 인스턴스 목록 - iam 사용자 목록 2. 각 서비스에서 읽을 수 있는 리소스 확인 3. pacu_aws_exploit()로 권한 열거: - module="iam__enum_permissions" 4. 민감한 데이터가 있는 S3 버킷 찾기 5. 플래그 다운로드 발견된 리소스와 플래그를 보고해줘. ``` --- ## Web3 & 블록체인 ### 1. 스마트 컨트랙트 재진입 공격 프롬프트 ``` Solidity 스마트 컨트랙트 취약점 문제야. 컨트랙트 주소: [주소] 네트워크: [mainnet/testnet/로컬] 컨트랙트 소스: [소스 코드 또는 경로] 다음을 수행해줘: 1. slither_analyze()로 자동 취약점 탐지 2. 재진입 취약점이 있는지 확인 3. 취약한 함수 식별 4. 공격 컨트랙트 작성: - receive() 또는 fallback() 함수에서 재귀 호출 5. solidity_compile()로 컴파일 6. web3_interact()로 배포 및 공격 실행 7. 플래그 획득 각 단계를 설명하면서 진행해줘. ``` **실제 사용 예시:** ``` 재진입 취약점이 있는 컨트랙트 공격: 컨트랙트: /tmp/VulnerableBank.sol 단계: 1. slither_analyze(contract_path="/tmp/VulnerableBank.sol") - 재진입 취약점 확인 2. 취약한 withdraw() 함수 분석 3. 공격 컨트랙트 작성: ```solidity contract Attacker { VulnerableBank target; constructor(address _target) { target = VulnerableBank(_target); } function attack() external payable { target.deposit{value: 1 ether}(); target.withdraw(1 ether); } receive() external payable { if (address(target).balance >= 1 ether) { target.withdraw(1 ether); } } } ``` 4. 로컬 테스트넷에서 실행 5. 플래그 확인 결과를 단계별로 보여줘. ``` ### 2. 스마트 컨트랙트 정수 오버플로우 공격 프롬프트 ``` Solidity 0.7.x 컨트랙트 (SafeMath 미사용): 컨트랙트 주소: [주소] 소스: [경로] 다음을 확인하고 공격해줘: 1. mythril_analyze()로 정수 오버플로우/언더플로우 취약점 찾기 2. 취약한 변수/함수 식별 3. 공격 시나리오 작성: - 언더플로우로 잔액을 최대값으로 만들기 - 또는 오버플로우로 검사 우회 4. web3_interact()로 트랜잭션 실행 5. 플래그 획득 공격 과정을 자세히 설명해줘. ``` ### 3. 블록체인 타임스탬프 조작 문제 프롬프트 ``` 블록 타임스탬프에 의존하는 컨트랙트 문제: 컨트랙트: [주소] 취약점: block.timestamp 사용 다음을 수행해줘: 1. 컨트랙트 소스 분석 2. 타임스탬프 기반 로직 찾기 3. 로컬 테스트넷에서: - 타임스탬프 조작 - 조건 우회 4. 플래그 획득 단계별로 설명해줘. ``` --- ## Pwnable ### 1. 버퍼 오버플로우 문제 프롬프트 ``` 바이너리 버퍼 오버플로우 문제야. 바이너리: [파일명] 원격 서버: [호스트:포트] (옵션) 다음 순서로 진행해줘: 1. 세션 생성 및 바이너리 업로드 2. checksec_binary()로 보호 기법 확인 3. auto_detect_vulnerabilities()로 자동 분석 4. 취약점 있으면: - extract_strings()로 win 함수나 "/bin/sh" 찾기 - analyze_with_radare2()로 함수 주소 확인 5. pwntools 익스플로잇 작성: - cyclic 패턴으로 오프셋 찾기 - 페이로드 구성 6. run_pwntools_exploit()로 실행 7. 플래그 획득 각 단계의 출력을 보여줘. ``` **실제 사용 예시:** ``` "bof" 바이너리 공략: 바이너리 위치: /tmp/bof 원격: nc 127.0.0.1 9000 단계: 1. session = create_analysis_session() 2. upload_binary(session_id=session['session_id'], filename="bof", content_base64=<base64>) 3. checksec_binary(session_id=session['session_id'], binary_filename="bof") 4. auto_detect_vulnerabilities(session_id=session['session_id'], binary_filename="bof") 5. extract_strings(session_id=session['session_id'], binary_filename="bof") | grep -i "win\|shell\|flag" 6. 익스플로잇 작성 및 실행 각 결과를 확인하면서 진행해줘. ``` ### 2. ROP 체인 구성 문제 프롬프트 ``` NX가 활성화된 바이너리: 바이너리: [파일명] 보호 기법: NX enabled, No PIE ROP 공격을 수행해줘: 1. checksec_binary()로 확인 2. find_rop_gadgets()로 가젯 찾기: - "pop rdi; ret" - "ret" 3. extract_strings()로 "/bin/sh" 주소 찾기 4. analyze_with_radare2()로 system@plt 주소 찾기 5. ROP 체인 구성: - pop_rdi_gadget - "/bin/sh" 주소 - system 주소 6. run_pwntools_exploit()로 실행 ROP 체인 구성을 자세히 설명해줘. ``` --- ## 리버싱 (Reversing) ### 1. 간단한 패스워드 체크 프롬프트 ``` 바이너리가 패스워드를 확인하는 문제야. 바이너리: [파일명] 다음을 수행해줘: 1. extract_strings()로 하드코딩된 문자열 찾기 2. 플래그 형식 문자열 있는지 확인 3. analyze_with_radare2()로 main 함수 분석: - strcmp, strncmp 호출 찾기 - 비교 대상 확인 4. 없으면 trace_library_calls()로 동적 분석 5. 올바른 패스워드 찾기 단계별 결과를 보여줘. ``` ### 2. XOR 암호화 리버싱 프롬프트 ``` XOR로 암호화된 플래그를 복호화해야 해. 바이너리: [파일명] 분석 순서: 1. extract_strings()로 암호화된 데이터 찾기 2. analyze_with_radare2()로 main 함수 디스어셈블: - XOR 연산 찾기 (xor 명령어) - 키 값 확인 3. trace_library_calls()로 실행 추적 4. XOR 키 추출 5. Python으로 복호화 스크립트 작성 6. 플래그 획득 XOR 키와 복호화 과정을 설명해줘. ``` --- ## 웹 해킹 (Web) ### 1. SQL 인젝션 문제 프롬프트 ``` 웹 애플리케이션 SQL 인젝션 문제: URL: [타겟 URL] 취약한 파라미터: [파라미터명] 다음을 수행해줘: 1. sqlmap_scan()으로 자동 탐지: - 데이터베이스 타입 확인 - 주입 가능 여부 확인 2. 데이터베이스 열거: - --dbs로 데이터베이스 목록 - --tables로 테이블 목록 - --columns로 컬럼 목록 3. 플래그 테이블에서 데이터 덤프 4. 플래그 추출 각 단계의 결과를 보여줘. ``` ### 2. 디렉토리 열거 및 LFI 프롬프트 ``` 웹 서버 디렉토리 열거 문제: URL: [타겟 URL] 순서: 1. gobuster_scan()으로 디렉토리 스캔 2. dirb_scan()으로 추가 경로 찾기 3. nikto_scan()으로 취약점 스캔 4. LFI 취약점 있으면: - /etc/passwd 읽기 - 로그 파일 확인 - 플래그 파일 찾기 5. 플래그 획득 발견된 경로와 취약점을 정리해줘. ``` --- ## 종합 문제 풀이 프롬프트 ### 복합적인 CTF 문제 ``` CTF 문제를 풀어야 해. 문제 정보: 제목: [문제 제목] 카테고리: [Pwnable/Reversing/Web/Crypto/Forensics/Cloud/Web3] 난이도: [Easy/Medium/Hard] 문제 설명: [전체 문제 설명 붙여넣기] 주어진 파일: - [파일1]: [설명] - [파일2]: [설명] 접속 정보 (있는 경우): - 호스트: [호스트] - 포트: [포트] - URL: [URL] 다음과 같이 진행해줘: 1. 먼저 문제 카테고리에 맞는 workflow 프롬프트 확인 2. 세션 생성 3. 초기 정찰 및 분석 4. 취약점 식별 5. 익스플로잇 개발/실행 6. 플래그 획득 각 단계마다: - 무엇을 하는지 설명 - 사용하는 도구와 명령어 - 출력 결과 - 다음 단계로 가는 이유 막히면 대안 방법을 제시하고, 최종적으로 플래그를 찾아줘. ``` --- ## 프롬프트 작성 팁 ### 1. 효과적인 프롬프트 구조 ``` [문제 유형] + [구체적 정보] + [단계별 요청] + [출력 형식] 예시: "RSA 암호학 문제인데, n=12345..., e=65537, c=67890...이 주어졌어. factordb로 확인하고, 안되면 RsaCtfTool로 공격해줘. 각 단계의 결과를 보여주고, 성공하면 복호화된 평문을 알려줘." ``` ### 2. 필수 포함 정보 - **문제 유형**: Pwnable, Crypto, Forensics 등 - **주어진 데이터**: 파일, 값, URL 등 - **목표**: 플래그 형식, 찾아야 할 것 - **제약사항**: 시간 제한, 특별한 조건 ### 3. 단계별 요청 ``` "다음 순서로 진행해줘:"로 시작하고 1. 첫 번째 단계 2. 두 번째 단계 3. ... ``` ### 4. 출력 요청 ``` "각 단계마다 결과를 보여주고" "성공하면 플래그를 강조해서 알려줘" "막히면 대안을 제시해줘" ``` --- ## 자주 사용하는 프롬프트 패턴 ### 패턴 1: 빠른 분석 ``` "[파일/URL]을 빠르게 분석해줘. 자동화 도구(auto_detect, slither, sqlmap 등)로 먼저 스캔하고, 발견된 취약점을 요약해서 알려줘." ``` ### 패턴 2: 단계별 가이드 ``` "[문제]를 단계별로 풀어줘. 각 단계마다: 1. 무엇을 하는지 2. 왜 하는지 3. 결과가 무엇인지 설명하면서 진행해줘." ``` ### 패턴 3: 학습 모드 ``` "[문제]를 풀면서 각 기법을 설명해줘. - 사용하는 공격 기법의 원리 - 왜 이 도구를 선택했는지 - 결과를 어떻게 해석하는지 자세히 알려줘." ``` --- ## 문제 유형별 핵심 키워드 ### 암호학 - "RSA 공격", "해시 크래킹", "소인수분해", "Wiener 공격" - "factordb", "hashcat", "RsaCtfTool", "SageMath" ### 포렌식 - "스테가노그래피", "메모리 덤프", "파일 카빙", "메타데이터" - "steghide", "volatility", "binwalk", "exiftool" ### 클라우드 - "S3 버킷", "메타데이터 서비스", "SSRF", "IAM 권한" - "aws-cli", "pacu", "버킷 열거" ### Web3 - "재진입", "정수 오버플로우", "스마트 컨트랙트" - "slither", "mythril", "solidity" ### Pwnable - "버퍼 오버플로우", "ROP", "NX 우회", "셸코드" - "checksec", "ROPgadget", "pwntools" ### 리버싱 - "디스어셈블", "동적 분석", "패커", "난독화" - "radare2", "ltrace", "strings" ### 웹 - "SQL 인젝션", "XSS", "디렉토리 열거", "LFI" - "sqlmap", "gobuster", "nikto" --- ## 마무리 이 가이드의 프롬프트를 사용할 때: 1. **문제 정보를 정확히 제공**: 파일명, 경로, 값 등을 명확히 2. **단계별로 요청**: 한 번에 모든 것을 요구하지 말고 단계별로 3. **결과 확인**: 각 단계의 출력을 확인하고 다음 단계 결정 4. **대안 준비**: 첫 번째 방법이 실패하면 다른 접근 시도 프롬프트를 상황에 맞게 수정하여 사용하세요!

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/foxibu/CTF-Solver'

If you have feedback or need assistance with the MCP directory API, please join our Discord server