Dreamhack 31

암호학 Stage 3

AES(Advanced Encryption Standard) 연산 능력 향상으로 DES가 안전하지 않게 된 것에 대한 대안. SPN(Substitution Permutation Network) 암호 구조 - 곱 암호의 일종. 치환(Substitution) - S-Box 사용 순열(Permutation) - P-Box 사용 여러 라운드에 걸쳐 반복함. 페이스텔 구조와 달리 라운드마다 입력 전체에 라운드 함수를 적용하므로 같은 수의 라운드를 사용할 때 두 배의 암호학적 안전성을 갖는다. AES 구조 라운드마다 128비트 크기의 블록을 암호화하는 블록 암호. 키 길이 = 128, 192,256 비트 중 하나 선택 라운드 수 = 키 길이에 따라 10, 12, 14 * AES-128 = 키 길이 128비트 1. ..

Dreamhack 2022.08.04

암호학 Stage 2

고전 암호 고전 암호 : 컴퓨터 발명 이전 간단한 기계와 손 등으로 암복호화를 수행하던 암호. 치환(Substitution) : 평문의 문자를 다른 문자로 바꾸는 것. 전치(Transposition) : 평문 문자들의 위치를 바꾸는 것. 단순 : 치환 암호 / 전치 암호 복잡 : 치환 + 전치 치환 암호 = 단일 문자 치환 암호, 다중 문자 치환 암호 단일 문자 치환 암호(Monoalpahabetic Substitution Cipher) 평문의 각 문자를 약속된 다른 문자로 치환하는 암호. 'A'가 'B'로 치환된다면 다른 문자들은 'B'로 치환 불가능. 카이사르 암호(Caesar Cipher) : 평문의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 치환. 복호화 : 다시 원래 위치로 문자 밀기...

Dreamhack 2022.07.30

암호학 Stage 1

키 생성(Key generation) : 암호화 및 복호화에 사용할 키를 만드는 과정. 암호화(Encryption) : 평문(plain text) -> 암호문(cipher text) 복호화(Decryption) : 암호문 -> 평문 암호 시스템(Cryptosystem) : 암호화와 복호화로 정보가 전달되는 체계 인코딩(Encoding) : 암호화와 유사하게 데이터를 다른 형태로 변환하는 것이나 데이터의 기밀성을 고려하지 않으며, 누구나 디코딩하여 원문을 구할 수 있다. 배타적 논리합 (eXclusive OR, XOR) 두 입력 값을 2진법으로 표기했을 때, 각 자릿수의 값이 같으면 0, 다르면 1 출력. 5⊕7=1012⊕111=010​=2 3⊕10=0011⊕1010​=1001​=9 임의의 정수를 자기 자..

Dreamhack 2022.07.30

웹 해킹 : XSS-2

문제 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. memo 엔드포인트 xss-1과 거의 동일한 듯. memo_text를 전역 변수로 선언하고 입력받은 memo를 text로 memo_text에 저장하고 memo.html에 render_template()으로 출력함. 여기서 엔티티코드로 변하니까 memo에는 취약점 없음. 이 코드에서도 vuln이 문제임. 별도의 코드 변환 없이 입력받은 param을 그대로 출력함. 주소창에 입력한대로 출력이됨. 아까와 동일하게 입력. memo페이지에 쿠키 정보가 출력되게끔. 계속 hello만 출력됨. 이상해서 /vuln에도 들어가보니 입력이돼있는데도팝업이 ..

Dreamhack 2022.07.25

웹 해킹 ClientSide: XSS

클라이언트 사이드 취약점 : 웹 페이지 이용자 대상 공격 이용자 식별 세션 및 쿠키 정보 탈취. -> 해당 계정으로 임의의 기능 수행. XSS 클라이언트 사이드 취약점 중 하나. 공격자가 웹 리소스에 악성 스크립트 삽입, 이용자의 웹 브라우저에서 해당 스크립트를 실행함. 특정 계정의 세션 정보 탈취 및 계정으로 임의 기능 수행. XSS 발생 예시와 종류 이용자가 삽입한 내용을 출력하는 기능에서 발생함. 예) 로그인 시 출력되는 "안녕하세요, 00회원님." 게시물, 댓글 Stored XSS : 악성스크립트가 서버에 데이터베이스 또는 파일 등의 형태로 저장 되고 서버의 응답에 담겨오는 XSS. -> 게시물과 댓글에 악성 스크립트를 포함해 업로드하는 방식. Reflected XSS : 악성스크립트 URL에 삽..

Dreamhack 2022.07.25

웹 해킹 Stage 3

Background : Cookie & Session HTTP 프로토콜 통신 메소드 - 웹 서버 명령. GET, POST 등 URL - 자원의 위치 헤더(Header) 클라이언트 정보 및 요청 내용 구체화하는 데이터 포함. +) 클라이언트의 인증 정보 Cookie, Session 쿠키 클라이언트의 IP 주소, User-Agent는 매번 변경될 수 있는 고유X 정보. HTTP 프로토콜의 Connectionless, Stateless 특징 -> 웹 서버는 클라이언트를 기억할 수 없음. 이런 특성을 갖는 HTTP에서 상태를 유지하기 위해 쿠키 탄생. Key와 Value로 이루어진 일종의 단위. - 서버가 클라이언트에 쿠키 발급 - 클라이언트는 서버에 요청을 보낼 때 마다 쿠키를 같이 보냄. - 서버는 클라이언..

Dreamhack 2022.07.22

시스템 해킹 quiz.c

내가 제대로 맞게 한건지는 잘 모르겠다. rao 실습한 사람의 블로그를 어떤 식으로 코드 작성해야하는지 알아보기 위해 참고했다. from pwn import *로 pwntools를 임포트하고, context.log_level = 'debug' 로 대상 프로세스와 익스플로잇 간에 오가는 모든 데이터를 화면에 출력시키도록 했는데 처음에는 몰랐지만 생각해보니 아래 이미지에서 python quiz.py를 했을 때 이 코드 떄문에 그렇게 길게 나온건가 싶어서 수정하고 다시 해봤다. 확실히 [DEBUG] 이 부분이 사라지긴 했는데 여전히 내가 원하는 예시 화면이 안나왔다. 그래서 이번엔 p.interative() 이게 터미널로 프로세스에 데이터를 입력하고, 프로세스의 출력을 확인할 수 있는건데 이게 문제인건지 한 ..

Dreamhack 2022.07.22

웹 해킹 Stage 2

Background: HTTP/HTTPS 인코딩(Encoding) 표준 : 컴퓨터의 모든 데이터는 0과1로 구성된다. 1. 아스키(Ascii) 7비트 데이터에 대한 인코딩 표준 알파벳과 특수 문자 등 표현 'A' = 1000001 2. 유니코드 컴퓨터 개발 초기 - 각 문자권마다 고유의 인코딩 표준 사용 -> 영어 = 아스키, 한글 = CP-949, EUC-KR 국제 소프트웨어 개발 어려움. -> 모든 언어의 문자를 하나의 표준에 담겠다는 목표로 유니코드 제정. 한 문자 = 최대 32비트(약 42억개) -> 전 세계의 문자를 표현하다고 남는 넓은 공간 이모지(Emoji)들도 유니코드에 포함되고 있음. 통신 프로토콜 웹 서버에 있는 리소스를 얻기 위해 클라이언트는 웹에게 특정 리소스를 지정하여 제공해달라고..

Dreamhack 2022.07.22

시스템 해킹 Stage 3

디버거(Debugger) 버그(bug) : 실수로 발생한 프로그램의 결함. 디버거 : 버그를 없애기 위해 사용하는 도구. 프로그램을 어셈블리 코드 단위로 실행하면서, 실행 결과를 사용자에게 보여줌. gdb(GNU debugger) 무료 오픈 소스. 우분투에 기본 설치. debugee.c를 컴파일 해준 뒤 gdb debugee로 디버깅을 해준다. ELF(Executable and Linkable Format) = 리눅스의 실행파일 형식 헤더와 여러 섹션들로 구성 헤더 : 실행에 필요한 여러 정보 섹션 : 컴파일 된 기계어 코드, 프로그램 문자열 등 여러 데이터 포함 진입점(Entry Point, EP) - 운영체제는 ELF를 실행할 때, 진입점의 값부터 프로그램을 실행한다. readelf로 확인해본 결과,..

Dreamhack 2022.07.19