Security 12

XSS game

경희대학교 중앙동아리 쿠러그의 정보보안 강의를 기반으로 정리한 글입니다.XSS gameXSS game은 XSS 공격을 통해 다음과 같이 alert()를 띄우는 게임이다.Level 1: Hello, world of XSS해당 창에 "hi"라고 입력하면,다음과 같이 "hi"가 그대로 뜨는 것을 확인할 수 있다. 주어진 Target code에서 해당 페이지를 보여주는 부분을 찾아보면,message = "Sorry, no results were found for " + query + "." 해당 코드를 찾을 수 있다.이 코드를 보면 입력한 대로 query로 들어간다. 때문에, 아래와 같이 입력을 넣어주면 alert()를 띄울 수 있다. Level 2: Persistence is keyLevel 1을 풀었던 방식..

정보보안 3차시: 웹 - SQL Injection

경희대학교 중앙동아리 쿠러그의 정보보안 강의를 기반으로 정리한 글입니다.배경 지식DB (Database)여러 사람이 공유하여 사용할 목적으로 구조화된 정보 또는 데이터의 조직화된 모음집이다.대부분은 여러 개의 표가 모여 있다. (마치 엑셀 시트처럼) DBMS (Database Management Systme)데이터베이스를 '데이터의 집합'이라고 정의한다면, 이런 데이터베이스를 관리하고 운영하는 소프트웨어를 DBMS라고 한다.다양한 데이터가 저장되어 있는 데이터베이스에 여러 명의 사용자나 응용 프로그램이 공유하고 동시에 접근이 가능하게 한다.ex) MySQL, Oracle, MariaDBSQL (Structured Query Language)구조화된 질의 언어라는 뜻으로, 데이터를 쿼리 조작 및 정의하고 ..

정보보안 2차시: 웹 - 기본적인 웹 취약점

경희대학교 중앙동아리 쿠러그의 정보보안 강의를 기반으로 정리한 글입니다.웹 해킹해킹이란 개발자가 의도하지 않은 동작을 입력 혹은 행위를 통해 악의적인 결과를 만들어내는 것을 말하며,웹 해킹은 클라이언트와 웹 서버 간의 요청과 응답 흐름에서 발생한다.클라이언트 / 서버▶ 클라이언트 / 서버 클라이언트브라우저서버라는 다른 컴퓨터에 접속할 수 있는 응용프로그램이나 서비스웹페이지에서 하는 요청은 대부분 웹브라우저가 함 (웹에서 클라이언트는 브라우저)HTML, JS, CSS 등웹페이지를 요청해서 CSS와 같은 요소에 연결해서 홈페이지가 그려짐브라우저의 위치도 내 컴퓨터이기에, 코드들의 실행 위치도 내 컴퓨터 안에 있음페이지를 전송받으면 인터프리터를 통해 페이지를 화면에 뿌림서버 사이드웹서버, 데이터베이스클라이언트..

정보보안 1차시: 네트워크 - ARP와 TCP/UDP

경희대학교 중앙동아리 쿠러그의 정보보안 강의를 기반으로 정리한 글입니다.네트워크MAC vs IPMAC각 네트워크 인터페이스에 할당된 물리적인 고유 식별 주소로,Data Link 계층에서 사용되며, 같은 네트워크 내에서만 유일하면 된다. 48bit 구성 -> 8bit씩 6자리로 구성 -> 16진법으로 총 12자리로 표기ex) 12-34-56-AB-CD-EF (앞 3자리는 제조사, 뒤 3자리는 기기 고유 코드) IP실제 통신 과정에서 사용하는 고유 주소로,Network 계층에서 사용되며, 같은 네트워크 내인 LAN 환경에서는 MAC 주소 기반 통신이 이루어진다. IP 주소IPv4: 32비트로, 8비트씩 끊어 10진수로 나타낸다. ex) 192.168.0.1IPv6: 128비트로, 4자리씩 끊어 16진수로 나..

Beginners: DH101 - 3 (코딩)

DreamHack의 Beginners 로드맵을 기반으로 정리한 글입니다.Visual Studio Code코딩(Coding)은 프로그래밍 언어를 작성함으로써 컴퓨터에게 명령할 수 있는 체계를 만드는 행위로, 해킹과 뗄 수 없는 관계이다. 그리고 이러한 코딩을 시작하기 위해선 소스 코드 편집기를 잘 사용할 수 있어야 한다. 비주얼 스튜디어 코드(Visual Studio Code, VS Code)는 Windows, macOS, Linux에서 사용 가능한 소스 코드 편집기이다. 기본적으로 JavaScript, TtypeScript, Node.js를 지원하며 확장 프로그램(Extension)을 통해 C, Java, Python 등 100개 이상의 언어를 지원한다. 가볍고 무료인데 다양한 기능을 제공하여 많은 사람..

Beginners: DH101 - 2 (리눅스 사용법)

DreamHack의 Beginners 로드맵을 기반으로 정리한 글입니다.셸(Shell)셸은 유저가 리눅스 시스템을 이용할 수 있는 인터페이스이다. 셸은 유저에게 입력을 받고 운영체제가 그것을 프로그램으로 처리하면 그 결과를 유저에게 출력한다.  Ubuntu를 기준으로 했을 때, 터미널을 실행하면 bash 셸이 자동으로 실행된다. 셸 프롬프트(Shell Prompt)user@user-VirtualBox:~$ 이것을 셸 프롬프트라고 부른다. 유저는 셸 프롬프트를 보고 셸이 명령어를 입력 받을 준비가 되었음을 알 수 있다. user@user-VirtualBox:~$ iduid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(di..

Beginners: DH101 - 1 (컴퓨터 과학 기초)

DreamHack의 Beginners 로드맵을 기반으로 정리한 글입니다.진법진법은 임의의 숫자 혹은 문자를 사용하여 수를 표현하는 체계를 말한다. n진법은 한 자릿수를 n가지(0 ~ n-1)의 숫자 혹은 문자로 나타낼 수 있다. 10진법, 2진법, 16진법으로 나타낸 수는 각각 10진수(decimal), 2진수(binary), 16진수(hexadecimal)라고 한다. 10진법: 10개(0 ~ 9)의 숫자로 수를 표현실생활에서는 손가락 10개로 숫자를 세고, 각 자릿수를 0 ~ 9까지의 수로 나타낸다. 사람들이 자연스럽게 사용하고 있는 수 체계가 바로 10진법이다. 2진법: 2개(0, 1)의 숫자로 수를 표현컴퓨터는 사람과 다르게 10진법이 아닌 2진법을 사용한다. 흔히 컴퓨터를 두고 '0과 1로 이루어..

System Hacking: Shellcode - 2

DreamHack의 System Hacking 로드맵을 기반으로 정리한 글입니다.Exploit Tech: 2. execve Shellcode▶ 리눅스 계층 셸(Shell, 껍질)이란 운영체제에 명령을 내리기 위해 사용되는 인터페이스로, 운영체제의 핵심 기능을 하는 프로그램을 커널(Kernel, 호두 속 내용물)이라고 하는 것과 대비된다. 셸을 획득하면 시스템을 제어할 수 있게 되므로 통상적으로 셸 획득을 시스템 해킹의 성공으로 여긴다. execve 셸코드는 임의의 프로그램을 실행하는 셸코드인데, 이를 이용하면 서버의 셸을 획득할 수 있다. 또한, 다른 언급없이 셸코드라고 하면 이를 의미하는 경우가 많다. 최신의 리눅스는 대부분 sh, bash를 기본 셸 프로그램으로 탑재하고 있으며, 이 외에도 zsh, ..

System Hacking: Shellcode - 1

DreamHack의 System Hacking 로드맵을 기반으로 정리한 글입니다.Exploit Tech: 1. orw Shellcode해킹 분야에서 상대 시스템을 공격하는 것을 익스플로잇(Exploit)이라고 부른다. 익스플로잇은 '부당하게 이용하다'라는 뜻이 있는데, 상대 시스템에 침투하여 시스템을 악용하는 해킹과 맥락이 닿는다. 셸코드(Shellcode)는 시스템 해킹의 익스플로잇과 관련된 공격 기법 중 하나로, 익스플로잇을 위해 제작된 어셈블리 코드 조각을 일컫는다. 일반적으로 셸을 획득하기 위한 목적으로 셸코드를 사용해서, 특별히 '셸'이 접두사로 붙었다. 셸을 획득하는 것은 시스템 해킹의 관점에서 매우 중요하다. 만약 해커가 rip를 자신이 작성한 셸코드로 옮길 수 있으면 해커는 원하는 어셈블리..

System Hacking: Tool Installation - 2

DreamHack의 System Hacking 로드맵을 기반으로 정리한 글입니다.Tool: pwntools파이썬으로 여러 개의 익스플로잇(취약점 공격) 스크립트를 작성하다 보면, 자주 사용하게 되는 함수들이 있다. 예를 들어 정수를 리틀 엔디언의 바이트 배열로 바꾸는 패킹 함수, 또는 그 역을 수행하는 언패킹 함수 등은 익스플로잇 과정에 거의 항상 필요하다. ※ 리틀 엔디언: 데이터를 메모리에 저장하거나 전송할 때, 값의 하위 바이트(작은 값의 바이트)를 먼저 저장하는 방식이다. 이런 함수들을 반복적으로 구현하는 것은 비효율적이다. 그래서 시스템 해커들은 이들을 집대성하여 pwntools라는 파이썬 모듈을 제작하였다. pwntools 덕분에 익스플로잇 제작은 전과 비교할 수 없을 정도로 간단하고, 쉬워졌..