생활코딩 WEB2 - JavaScript
·
Hacking/Web Hacking
WEB2 JavaScript - 1.수업소개 JavaScript : 사용자와 동적으로 상호작용 할 수 있도록 기능 추가 html로 홈페이지 제작 → JavaScript로 사용자와 상호작용 ​ WEB2 JavaScript - 2.수업의 목적 웹은 한번 출력하면 바꿀 수 X → JavaScript를 이용해서 동적 기능 추가 ​ 야간-주간모드를 버튼을 통해 변경하기 ​ input type = "button" → 버튼 추가 value = "night" → 버튼 이름 night onclick = → 속성값으로 JavaScript가 와야 함. 버튼을 클릭하면 작성된 JavaScript 코드를 실행함 " document.queryselector('body').stylebackgroundColo..
섹션 1. 디지털 포렌식 기초, Warm-up 💪
·
Hacking/Forensics
1. 앞으로 하게 될 일들 - 디지털 포렌식 수사관에 몰입하여 수사 기법과 타임라인을 체화함 - 컴퓨터 디스크 : C드라이브, D드라이브 등 데이터가 담겨 있는 공간(창고) - 메모리 : 프로그램 등을 실행하기 위해 필요한 공간 - 디스크 이미징 : 디스크를 파일의 형태로 가져오는 것 - 디스크 마운트 : 이미징 된 파일을 컴퓨터에 등록하는 것 - 메모리 덤프 : 실행되고 있는 프로그램을 하나의 파일로 저장하는 것 2. 디스크 이미징 강의 진행을 위해 추가 드라이브가 존재하거나 USB를 준비해야 한다. FTK-imager : 이미지를 이미징, 마운팅, 메모리 덤프, 검색 기능이 있는 도구 FTK 다운로드 홈페이지에 접속해서 FTK-imager 파일을 다운로드 받아야 하는데 다운되어 있어서 파일은 구글 드..
섹션 0. 디지털 포렌식 소개, 시작이 반이다 👍
·
Hacking/Forensics
1. 디지털 포렌식이란 무엇인가? - 디지털 포렌식 : 컴퓨터 범죄와 관련하여 디지털 장치에서 발견되는 자료를 복구하고 조사하는 법과학의 한 분야 - 컴퓨터 장치가 들어가는 디바이스를 대상으로 증명된 과학적 기법을 이용해 정보를 수집하고 추출해 증거 수집 등에 이용하는 영역 2. 디지털 포렌식의 필요성 - 해킹 등 컴퓨터 관련 범죄 뿐만 아니라 일반 범죄에서도 디지털 포렌식으로 획득할 수 있는 증거가 주요 단서가 되는 경우가 많아짐 (카톡 기록 복구나 사진 복구 등....) - 범죄 수사 외에도 민사사건이나 일반 기업(내부 정보 유출, 회계 감사 등)의 분야에서도 활용도가 증가했음 = 취업의 길이 넓어졌다 3. 디지털 포렌식의 유형과 대상 1. 디지털 포렌식의 유형 1. 침해 사고 대응 - 실시간으로 사..
백준 11651 좌표 정렬하기 2 (Class 2 실버 5)
·
BOJ/Python
문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 내 제출 import sys n = int(sys.stdin.readline()) arr = [] for i in range (n): (a, b) = map(int,sys.stdin.readline().split()) arr.append((..
백준 11650 좌표 정렬하기 (Class 2 실버 5)
·
BOJ/Python
문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 내 제출 import sys n = int(sys.stdin.readline()) arr = [] for i in range(n): arr.append(tuple(map(int,sys.stdin.readline().split()))) arr..
백준 10866 덱 (Class 2 실버 4)
·
BOJ/Python
문제 정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여덟 가지이다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 개수를 출력한다. empty: 덱이 비어있으면 1을, 아니면 0을 출력한다. front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에..
백준 10845 큐 (Class 2 실버 4)
·
BOJ/Python
문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 ..
백준 4949 균형잡힌 세상 (실버 4)
·
BOJ/Python
문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. 모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다. 짝을 이루는 두 괄호가 있을 때, 그 사이에 있..
백준 10828 스택 (Class 2 실버 4)
·
BOJ/Python
문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보..
백준 2839 설탕 배달 (Class 2 실버 4)
·
BOJ/Python
문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) 출력 상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정..
[Pwnable.kr] input
·
Hacking/System
포트에 접속해 보았다. 파일을 검색해 input.c 파일을 읽어보았다. 내용은 길어서 캡처 사진이 아니라 코드로 첨부한다. #include #include #include #include #include int main(int argc, char* argv[], char* envp[]){ printf("Welcome to pwnable.kr\n"); printf("Let's see if you know how to give input to program\n"); printf("Just give me correct inputs then you will get the flag :)\n"); // argv if(argc != 100) return 0; if(strcmp(argv['A'],"\x00")) ret..
[Pwnable.kr] random
·
Hacking/System
ssh로 서버에 접속해보았다. 서버에 접속해 ls로 파일을 살펴보니 flag, random, random.c 파일이 있었다. random 파일을 실행시키고 11111111을 입력해 보니까 번호가 틀렸고, 2^32개의 경우를 시도해 보라고 얘기한다. cat을 통해서 random.c 파일을 확인해 보았다. rand() 함수를 이용해서 random 값을 구하는데, time을 이용해서 값을 구하지 않기 때문에 항상 고정된 값이 처음으로 나올 것으로 예상된다. 따라서 해당 값과 xdeadbeef 값을 같게 하면 flag를 읽을 수 있다. gdb를 통해서 random을 분석했다. main+18에서 rbp-0x4에 rand()의 값을 저장하는 것을 확인할 수 있다. main+18에 breakpoint를 설정하고 실행..