| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 해킹
- 리버싱
- 드림핵
- Web
- WarGame
- webhacking
- 소프트웨어보안
- 네트워크보안
- CodeEngn
- 웹
- network
- 비박스
- 워게임
- dreamhack
- ftz
- 시스템
- System
- 웹해킹
- Webhaking
- 순서도
- 소프트웨어
- 알고리즘
- 모의해킹
- 시스템해킹
- hacking
- TCP
- XSS
- reversing
- bee-box
- 네트워크
- Today
- Total
목록전체 글 (236)
Without a Break
BCD 코드와 3초과 코드의 변환 4비트의 BCD 코드를 받아들여 4비트의 3초과 코드로 변환하여 출력하는 알고리즘 배열 B는 입력인 BCD 코드 보관용 배열 배열 E는 결과인 3초과 코드 보관용 배열 배열 A는 2진수 0011 보관용 배열 변수 C는 캐리 첫 번째 반복문 : 최하위 비트부터 상위 비트로 올라가면서 덧셈을 실시한다. BCD 코드 1자리와 0011 중 1자리를 그리고 캐리를 더한다. 합이 1보다 큰지 검사하고 1보다 크면, 2로 나눈 나머지를 저장하고 상위 캐리가 있음을 표시한다. 1보다 작으면 합 그대로를 저장하고 상위 캐리가 없음을 표시한다. 두 번째 반복문 : 배열 E를 차례대로 출력한다. 패리티 비트 검증 8비트 패리티 비트 오류 검사를 실시하는 알고리즘 P(0)에는 홀수 패리티(1..
2진수 -> 10진수 변환 D는 10진수 결과 값 보관하는 변수, SIGN은 양수(1) 음수(-1)를 구분하는 변수이다. T(1)이 양수일 때, 반복문은 T(2)부터 T(8)까지의 반복문을 진행한다. 반복문에서는 T(K)의 가중치를 구하고, T(K)가 1인 경우에만 가중치를 남기고 D에 가중치를 누적한다. 반복문이 끝난 후, 양/음 부호릅 ㅏㄴ복하고 10진수 결과값을 출력한다. T(1)이 음수인 경우, SIGN 변수에 음수임을 기억한 후 감수(B=1)를 반영하고 T(8)부터 T(2)까지 반복문을 진행한다. 반복문에서는 감수를 빼고, 상위 비트에도 감수가 발생하는지 검사한 후 발생한다면 -1을 1로 바꾼 후 1의 보수로 바꾼다. 감수가 발생하지 않는다면 B=0으로 바꿔준 후, 1의 보수로 바꾼다. 10진수..
버퍼 오버플로우 버퍼 버퍼는 일상에서 '완충 장치'라는 뜻으로 사용되며, 컴퓨터 과학에서는 '데이터가 목적지로 이동되기 전에 보관되는 임시 장소'의 의미로 쓰인다. 수신 측과 송신 측 사이에 버퍼라는 임시 저장소를 두고, 이를 통해 간접적으로 데이터를 전달하게 한다. 송신 측은 버퍼로 데이터를 전송하고, 수신 측은 버퍼에서 데이터를 꺼내 사용합니다. 이렇게 하면 버퍼가 가득 찰 때까지는 유실되는 데이터 없이 통신할 수 있다. 버퍼 오버플로우 일반적으로 버퍼가 넘치는 것을 말한다. 일반적으로 버퍼는 메모리상에 연속해서 할당되어 있으므로, 어떤 버퍼에서 오버플로우가 발생하면, 뒤에 있는 버퍼들의 값이 조작될 위험이 있다. 또한, 버퍼 오버플로우는 일반적으로 어떤 메모리 영역에서 발생해도 큰 보안 위협으로 이..
해킹 분야에서 상대 시스템을 공격하는 것을 익스플로잇(Exploit)이라고 부른다. 그 중, 쉘코드에 대해 알아보도록 하자. 셸코드(Shellcode) : 익스플로잇을 위해 제작된 어셈블리 코드 조작 orw 셸코드 : 파일을 열고 읽은 뒤 화면에 출력해주는 셸코드 syscall rax arg0 (rdi) arg1 (rsi) arg2 (rdx) read 0x00 unsigned int fd char *buf size_t count write 0x01 unsigned int fd const char *buf size_t count open 0x02 const char *filename int flags umode_t mode 1. int fd = open("/tmp/flag", O_RDONLY, NULL) ..
컴퓨터의 구조 및 소프트웨어 실행 원리 1. 언어별 실행환경의 차이 - Low-level programs은 메모리를 직접 다룸 - Advantage: 효과적이고, 정확한 제어가 가능 - Disadvantage: 데이터의 추상화원칙을 위배 가능 메모리의 임의 접근 포인터 및 포인터 연산 안전한 메모리 사용 실패 2. 안전한 메모리 사용 명확하게 지정된 메모리 영역만을 사용하도록 하기 위해 강력하게 지켜져야 하는 규칙 다른 프로그램의 메모리 영역 절대 접근 불가 현재 함수의 접근가능 메모리 영역 외의 영역의 접근 통제 3. 코드와 데이터 폰 노이만 모델 : Code와 data를 동일 시 함 폰 노이만 컴퓨터 구조 : 해당 모델을 하드웨어 형태로 개발, 컴퓨팅 환경의 혁명의 기폭제 문제점 데이터와 코드가 같은..
Count 알고리즘 영어 점수를 보관하는 배열 변수 JUMSU를 선언한다. 영어 점수가 80점 이상인 학생들의 수를 보관할 변수인 COUNT의 초깃값을 0으로 잡는다 변수 i를 증가시켜 배열 JUMSU를 하나씩 비교할 것이므로 i의 초깃값을 1로 잡는다. 반복문 : JUMSU의 i번째 원소가 80점이 넘는지 확인하고, 넘는다면 COUNT 값을 1 증가시킨다. i 값을 1씩 증가시켜 JUMSU의 원소를 차례대로 검사한다. JUMSU는 100개의 원소를 가지므로, i가 100이 넘으면 반복문을 끝낸다. 최댓값과 최솟값 M : 영어 만점 중에서 수학 최고점을 보관하는 변수 i : 배열을 차례로 검사하기 위해 사용하는 인덱스 변수 반복문 : 영어 점수가 100점인 학생일 경우, 수학 점수가 수학 최고점(M)을 ..
debugee.c 파일을 생성한 뒤 디버그 파일을 실행시킨다. 실행하면 다음과 같이 뜬다. start ELF : 리눅스의 실행 파일 형식 EP(Entry Point) : ELF의 헤더 중 진입점 필드 debugee 파일을 readelf로 확인해 본 결과, debugee의 진입점은 0x1060이라는 것을 알 수 있다. gdb debugee로 들어가 pwndbg에 start 명령을 입력하면 마찬가지로 진입점의 주소를 확인할 수 있다. Context context는 크게 registers, disasm, stack, backtrace의 4개의 영역으로 나눈다. registers 레지스터의 상태를 보여줍니다. disasm rip부터 여러 줄에 걸쳐 디스어셈블된 결과를 보여줍니다. stack rsp부터 여러 줄에..
문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 45보다 작거나 같은 자연수이다. 출력 첫째 줄에 n번째 피보나치 수를 출력한다. #include int arr[46] = {0,}; int f(int x) { if(x == 1 || ..