일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- codeup
- 오늘의 보안
- defcon.mem
- Volatility
- cmd
- SQLD
- C 프로그래밍
- 랜섬웨어
- 오늘의 영어
- 보안동향
- 코딩
- 보안
- Defcon DFIR CTF 2019
- sql
- c언어
- 악성코드
- 정보보안기사
- 오늘의 보안동향
- 리버싱 핵심원리
- 리버싱
- ctf
- 다운로드
- 멀웨어
- C language
- Memory Forensics
- Code Up
- DEFCON
- 설치
- 코드업
- C
- Today
- Total
목록분류 전체보기 (165)
오브의 빛나는 별
[1042] 정수 2개 입력받아 나눈 몫 출력하기 정수 2개(a, b) 를 입력받아 a를 b로 나눈 몫을 출력해보자. 단, -2147483648
[1038] 정수 2개 입력받아 합 출력하기1 정수 2개를 입력받아 합을 출력하는 프로그램을 작성해보자. (단, 입력되는 정수는 -1073741824 ~ 1073741824 이다.) #include int main(void) { long long int x, y; scanf("%lld %lld", &x, &y); printf("%lld", x+y); return 0; } [1039] 정수 2개 입력받아 합 출력하기2 정수 2개를 입력받아 합을 출력해보자. 단, 입력되는 정수는 -2147483648 ~ +2147483648 이다. #include int main(void) { long long int x, y; scanf("%lld %lld", &x, &y); printf("%lld", x+y); retu..
[1034] 8진 정수 1개 입력받아 10진수로 출력하기 8진수로 입력된 정수 1개를 10진수로 바꾸어 출력해보자. #include int main(void) { int n; scanf("%o", &n); printf("%d", n); return 0; } [1035] 16진 정수 1개 입력받아 8진수로 출력하기 16진수로 입력된 정수 1개를 8진수로 바꾸어 출력해보자. #include int main(void) { int n; scanf("%x", &n); printf("%o", n); return 0; } ※ 여러 줄을 설명(주석)을 넣을 경우 /* 와 */ 사이에 작성 [1036] 영문자 1개 입력받아 10진수로 출력하기 영문자 1개를 입력받아 아스키 코드표의 10진수 값으로 출력해보자. #incl..
[1031] 10진 정수 1개 입력받아 8진수로 출력하기 10진수를 입력받아 8진수(octal)로 출력해보자. #include int main(void) { int n; scanf("%d", &n); printf("%o", n); return 0; } ※ 10진수 %d, 8진수 %o [1032] 10진 정수 입력받아 16진수로 출력하기1 10진수를 입력받아 16진수(hexadecimal)로 출력해보자. #include int main(void) { int n; scanf("%d", &n); printf("%x", n); return 0; } ※ 16진수 %x [1033] 10진 정수 입력받아 16진수로 출력하기2 10진수를 입력받아 16진수(hexadecimal)로 출력해보자. #include int m..
[1028] 정수 1개 입력받아 그대로 출력하기2 정수 1개를 입력받아 그대로 출력해보자. (단, 입력되는 정수의 범위는 0 ~ 4,294,967,295 이다.) #include int main(void) { unsigned int n; scanf("%u", &n); printf("%u", n); return 0; } ※ int 형은 -2147483648 ~ +2147483647 범위, unsigned int 형은 0 ~ 4294967295 범위 [1029] 실수 1개 입력받아 그대로 출력하기2 실수 1개를 입력받아 그대로 출력해보자. (단, 입력되는 실수의 범위는 +- 1.7*10-308 ~ +- 1.7*10308 이다.) #include int main(void) { double d; scanf("%..
[1024] 단어 1개 입력받아 나누어 출력하기 단어를 1개 입력받는다. 입력받은 단어(영어)의 각 문자를 한 줄에 한 문자씩 분리해 출력한다. #include int main(void) { char d[20]; int i; scanf("%s", &d); for(i=0; d[i]!='\0'; i++){ printf("\'%c\'\n", d[i]); } return 0; } ※ \0: 널(NULL) 문자. '아무것도 없는'이라는 의미. ※ for( 1 ; 2 ; 3 ): 1에는 초기화식, 2에는 조건식 3에는 증감식이 들어감 ex) for(i=0; d[i]!='\0'; i++) ==> 0부터 널문자가 나올 때까지 1씩 증가하여라 라는 뜻 [1025] 정수 1개 입력받아 나누어 출력하기 다섯 자리의 정수 1..
안녕하세요, 오브입니다. 오늘은 프로세스 메모리 구조와 버퍼오버플로우, ASLR을 알기 위한 ROP 개념, 기본 어셈블리 개념에 대해 알아보겠습니다. 프로세스 메모리 구조 스택 - 한쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO 형식의 자료구조. 가장 최근에 스택에 추가한 항목이 가장 먼저 제거될 항목 - pop(): 스택에서 가장 위에 있는 항목 제거 - push(): 스택의 가장 윗 부분에 추가 - 연결리스트로 구현 가능 - 재귀 알고리즘, 웹 브라우저 방문 기록, 실행 취소, 역순 문자열 만들기, 수식의 괄호 검사, 후위 표기법 계산 등에 사용 스택의 구조 ■ 스택 프레임 저장 내용 - return Address: 함수가 종료되었을 떄 호출했던 함수의 복귀 주소. 되돌아가야 하는 위치. 함수 관련 ..
안녕하세요, 오브입니다. 오늘은 취약점 분석과 CTF에 필요한 개념, 버퍼오버플로우 실습을 위한 리눅스 기본 개념에 대해 알아보겠습니다. CTF에 필요한 개념 I/O: input/output - xinetd: 오픈 소스 슈퍼 서버 데몬. 유닉스 계열. 인터넷 기반. 유닉스와 리눅스 모두에서 명령어와 옵션이 같음. /etc/xinetd.d 디렉터리에 서비스 설정 파일 있음. - redirection: 표준 입력의 입력선, 표준 출력의 출력선, 표준 오류 출력선 변경. 보통 입출력선은 단말 장치로 되어 있으나 셸에서 희망하는 것 지시 가능. 보통 네 종류가 있음. "", ">>" 표준 출력선 변경 - pipe: 두 개의 프로그램을 연결해주는 연결통로. "|" 문자 사용. - socket: 서로 다른 통신 환..