분류 전체보기 147

SSH, File Descriptor, nc 명령어

SSH Secure Shell의 약어. 공개 키 방식의 암호 방식을 사용하여 원격지 시스템에 접근하여 암호화된 메시지를 전송할 수 있는 시스템. LAN 상에서 다른 시스템에 로그인할 때 스니퍼에 의해서 도청당하는 것을 막을 수 있다. 두 호스트 사이의 통신 암호화 관련 인증 기술들을 사용하여, 안전한 접속과 통신을 제공하는 프로토콜. 원격 로그인(rlogin), 원격 명령 실행(rsh), 파일 복사(rcp), 원격 접속 서비스(telnet), 파일 전송용 프로토콜(ftp) 등을 대체하여 사용된다. 인증 방법 기본 : 공개키를 사용한 전자 서명에 의한 인증 공개키 불가능할 경우 패스워드를 이용하여 인증을 하게 된다. -> 호스트 사이의 모든 통신이 암호화에 의해서 자동 보호되기 때문에 어떠한 네트워크 공격..

시스템 해킹 2022.08.03

pwnable.kr fd 문제 풀이

호스트 이름과 포트 번호, 패스워드를 준 것으로 봐서 해당 서버에 접속하라는 것으로 보인다. 그래서 칼리 리눅스로 이동해서 접속했다. 엔터 누르고 yes 누르고 패스워드 입력하라고 하면 guest를 입력한다. ls를 입력해서 파일을 확인해보니 fd, fd.c, flag 파일이 보인다 flag 파일 열려고 했는데 암호를 모른다. fd로 알아내야 할 것 같다. 리버싱이랑 비슷한 느낌이다. argv[1]이라고 숫자를 입력해야하는 것 같다. atoi로 입력한 문자열을 숫자로 바꿔준다. read(fd, buf, 32)는 파일 디스크립터 값, 저장할 버퍼, 읽을 크기를 넣어 전달해주는 함수이다. 0이면 표준입력이다. 이 부분이 좀 해석하기 힘든데, 아마 입력받은 값을 버퍼에 저장해주는거니까 fd가 0이어야하는거 아..

시스템 해킹 2022.08.02

암호학 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