분류 전체보기

1. SSH 란?SSH는 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 프로토콜을 가리킨다. 보안적으로 취약했던 기존 rsh, rlogin, telnet 등을 대체하기 위해 설계되었고 ( Secure Shell )의 약자이다.기본 암호화 방식을 지원하고 중간에 암호를 해킹당해도 원본을 알 수 없고 강력한 인증 방식을 지원한다.ssh 서버 실행 파일: /etc/sbin/sshdssh 클라이언트 실행 파일: /etc/bin/ssh 2. SSH 접속ssh [사용자 계정]@[원격지 ip]ex) -> ssh root@192.168.159.129# 원격 호스트 연결 포트 지정 후 밑의 명령어 작성 ssh -p 2220 ..
1. 분석 및 풀이Welcome을 출력하는 html 문서인데 개발자 도구를 들어가보니name="64es64_encoding" 이라는 이름으로 되어있는 값을 발견했습니다.뭔가 인코딩 되어 있는것 같은데 == 으로 되어있는것을 보아 base64 인코딩 후 패딩이 된것같습니다.따라서 base64 디코딩을 해봅시다.  디코딩 해보니 파이썬 코드가 나오네요  붙여넣고 실행해주면 됩니다
1. 문제 카이사르 암호화 문제이다.FLAG의 형식은 A-Z 이며 빈칸은 "_" 이다.decode_text 를 DH{ } 안에 넣어서 제출하면 된다.2. 코드 분석 문제의 규칙은 찾을 수 없다. 알고리즘을 알 수 없으니 알파벳 개수 만큼 다 돌려보자 (26개의 경우의 수를 모두 구해보자) 3. exploit    모든 경우의 수를 다 해보니 BASIC_CRYPTO_DREAMHACK 이라는 문자열이 가장 눈에 띄였다. 제출하니 정답이라고 한다.
1. 문제  test카이사르 암호화 방식으로 되어있는 소스코드를 보고 복호화 하는 문제인것 같다.  2. 카이사르 암호란? 알파벳을 13자리 씩 밀어내며 암호화 하는 방식이다. 즉, 알파벳을 일정한 수만큼 밀어내고 원래의 문자와 다른 문자를 치환하는 방식이다. 밑의 예시를 보면 13자리 씩 알파벳을 밀어내서 A == N , B == O... 형식으로 치환된다. 따라서 HELLO 를 치환하면 URYYB이다.  3. 코드 분석 전체 코드는 아래와 같다. 한개 씩 분석을 진행해보자   먼저 이 코드는 hex 리스트를 만드는 것이다. 범위는 0~255 까지이다. 범위가 255까지인 이유는 hex 값을 2자리로 모든 경우의 수를 따지면 16*16 = 256이라서 이다. hex(i) → i 를 hex 값으로 바꿔준..
1. 문제 쪽지는 16진수로 표현된 문자열이다. 단일 바이트(0x00 ~ 0xFF)와 XOR 연산이 되어서 만들어진 암호라고 한다. 2. exploit음... 16진수인것 같으니 0x00 ~ 0 xFF까지 모두 XOR(같으면 0 , 다르면 1) 연산을 해보자  XOR 연산을 다시 하는 이유는 2진수로 예시를 들어보자0100 1010 의 각자리를 1로 XOR 연산을 진행하면 1011 0101이다.여기서 1은 KEY 값으로 암호화를 할 때 사용하는 값이다.  하지만 다시 0100 1011의 각자리를 1로 XOR 연산을 진행하면 0100 1010이라는 원래의 평문값이 나오게 된다. 즉, 대칭키 암호화 방식으로 암호화/복호화에 사용되는 KEY값이 같은 것이다. 따라서 해당 문제에서도 XOR 된 값으로 다시 XO..
·Language/C
1. 문자열C언어에서 문자열은 문자의 배열로 표현되며, 종료 문자인 NULL 문자(\0)로 끝나야 한다. 2. 문자열 선언문자열을 선언하는 가장 기본적인 방법은 배열을 사용하는 것이다.배열의 크기는 문자열의 길이보다 하나 더 커야 한다.char str[6] = ["hello"]; 3. 문자열 선언과 초기화3.1 문자열 선언3.1.1 문자 배열을 사용한 선언5개의 문자와 마지막에 추가되는 NULL 문자를 저장할 수 있는 배열이다.char str[6] = "hello"; 3.1.2 포인터를 사용한 선언포인터를 사용하여 문자열을 선언하면 일반적으로 수정할 수 없는 메모리에 위치함으로 변경이 불가능하다.char *str = "hello"; 3.2 문자열 초기화3.2.1 초기 선언 시 문자열 상수를 사용하여 초기..
·Language/C
1. 배열배열은 연속적 메모리 위치에 저장된 변수들의 집합이다.배열을 사용하면 같은 데이터 타입의 변수들을 관리할 수 있다.1.1 배열의 선언데이터타입: 배열에 저장될 데이터 타입 지정배열이름: 배열의 이름배열크기: 배열에 저장할 수 있는 요소의 개수 (상수)// 기본 구조 데이터타입 배열이름[배열크기];// 예시 int numbers[5]; // 5개의 정수를 저장할 수 있는 배열char name[50]; // 50개의 문자를 저장할 수 있는 배열float scores[10]; // 10개의 실수를 저장할 수 있는 배열 1.2 배열의 초기화배열은 선언과 동시에 특정 값으로 초기화할 수 있다.배열 크기를 비워놓으면 초기화할 때 요소 개수만큼 크기가 자동 할당된다.// 기본 구조 데이터타입 배열이름[배열크..
·Language/C
1. 함수함수는 특정 작업을 수행하는 코드 블록이며, 코드의 재사용성을 높이고 프로그램의 구조를 개선하기 위해 사용 2. 함수의 기본 구조2.1 반환 타입함수가 실행 완료 후 반환하는 데이터 타입을 지정한다. 2.2 함수 이름함수를 호출할 때 사용하는 이름이다. ( 함수의 특성을 잘 나타내는 것으로 하는것이 좋음 ) 2.3 매개변수 리스트함수에 전달하는 입력값의 목록이다. 여러 매개변수가 있으면 , 으로 구분한다. 2.4 함수 본체함수가 호출될 때 실행할 코드 블록이다. 2.5 return함수의 실행 결과를 호출한 곳으로 반환하는 명령어이다.// 기본 구조 반환타입 함수이름(매개변수 리스트) { // 함수 본체 // 실행 코드 return 반환값;}// 예시 #include // 함수 선..
·Language/C
1. 반복문특정 조건이 만족하는 동안 코드 블록을 반환하여 실행하는 구조이다.for, while, do…while 세 가지 반복문을 제공한다. 2. for 반복문for 반복문은 반복 횟수가 명확할 때 사용하기 좋다.초기화, 조건 검사, 증감식을 사용하여 표현한다.초기화: 반복문이 시작될 때 한 번 실행되며, 제어 변수를 초기화할 때 사용조건: 조건이 참으로 평가될 때까지 반복문 내의 코드 블럭이 반복해서 실행증감: 코드 블럭 실행 후 실행되며, 제어 변수의 값을 증감시킬 때 사용된다.// 기본 구조for (초기화; 조건; 증감) { // 반복 실행할 코드}// 예시 for (int i = 0; i  3. while 반복문주어진 조건이 참인 동안 코드 블록을 반복해서 실행한다.3.1 기본 구조반복문 ..
스우스우03
'분류 전체보기' 카테고리의 글 목록 (6 Page)