Fascination
article thumbnail
[P4C] W8: Out of bounds & R/W primitives 취약점 공부하기
etc.../빡공팟(P4C) 4기 2022. 6. 12. 17:11

[P4C] W8: Out of bounds & R/W primitives 취약점 공부하기 # Out of bounds [dreamhack] Memory Corruption: Out of Bounds 1. 배열의 속성 - 배열은 연속된 메모리 공간을 점유하며, 배열이 점유하는 공간의 크기는 요소의 개수와 요소 자료형의 크기를 곱한 값이 됨 - 배열이 포함하는 요소의 개수를 배열의 길이(Length)라고도 부름 - 배열 각 요소의 주소는 배열의 주소, 요소의 인덱스, 요소 자료형의 크기를 이용하여 계산됨 2. Out of Bounds - OOB는 요소를 참조할 때, 인덱스 값이 음수이거나 배열의 길이를 벗어날 때 발생 - 프로세스는 계산한 주소가 배열의 범위 안에 있는지 검사하지 않음 - 만약 사용자가 배열..

article thumbnail
[P4C] W7: 올드 스쿨 취약점과 올드 스쿨 공격 기법 공부하기
etc.../빡공팟(P4C) 4기 2022. 6. 5. 18:52

[P4C] W7: 올드 스쿨 취약점과 올드 스쿨 공격 기법 공부하기 # 올드 스쿨 취약점 1) Buffer Overflow - 개념 기본적인 버퍼 오버플로우 공격은 데이터의 길이에 대한 불명확한 정의를 악용한 덮어쓰기로 발생 경계선 관리가 적절하게 수행되어 덮어쓸 수 없는 부분에 해커가 임의의 코드를 덮어쓰는 것을 의미 버퍼 오버플로우에 취약한 함수와 그렇지 않은 함수가 있는데, 프로그래머가 취약한 특정 함수를 사용하지 않는다면 공격이 훨씬 어려워짐 - 발생 원인 하나의 프로그램은 수 많은 함수로 구성되어 있는데 프로그램을 실행하여 함수가 호출될 때, 지역 변수와 복귀주소가 스택이라 하는 논리 데이터 구조에 저장됨 버퍼오버플로우는 이 복귀주소가 함수가 사용하는 지역변수의 데이터에 의해 침범 당할 때 발생..

article thumbnail
[P4C] W6: Double Linked List CRUD 구현, 어셈블리로 구구단 구현, Stack 개념 공부하기
etc.../빡공팟(P4C) 4기 2022. 5. 29. 15:16

W6: Double Linked List(CRUD) 구현, 어셈블리로 구구단 구현, Stack 개념 공부하기 참고 자료: 자료구조 개념 및 구현 - 유석종 교수님(자료구조 수업 교재), Stack 참고자료 - 제공해주신 .md 파일 # 1. Double Linked List(CRUD) 구현 - SLL(Single Linked List)의 문제점: 다음 노드만 알고 이전 노드는 알 수 없음 - DLL(Double Linked List) 각 노드는 이전 노드와 이후 노드의 정보를 알 수 있음 삽입/삭제가 용이함 헤드 노드 필요: 데이터를 가지지 않고, 삽입/삭제 코드를 간단하게 할 목적으로 만들어진 노드 head node와 tail노드를 각각 사용할 수도 있지만 교재에서는 head node만을 사용하여 ci..

article thumbnail
[P4C] W4-W5: C언어로 HTTP 서버 구현
etc.../빡공팟(P4C) 4기 2022. 5. 21. 02:24

W4-W5: C언어로 HTTP 서버 구현 참고 자료: C, TCP 기반으로 간단한 HTTP 서버 작성하기 # 1. 구현 내용 - 서버 프로그램이 존재하는 디렉터리를 기준으로 파일을 접근할 수 있는 서버 - 개발 순서 socket(), bind(), listen() 등을 활용하여 TCP 소켓을 만듬 accept() 후에 HTTP 프로토콜로 처리하는 함수를 만듬 처리 중에 에러가 발생하면 404, 500 상태 코드로 응답 - 과제 제출 예시 영상 # 2. TCP 소켓 생성하기 1) TCP란? Transmission Control Protocol 서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜 데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜 데이터는 네트..

article thumbnail
[P4C] W3: 코드업 기초 100제 70번 대 이후 문제들 중 가장 어려웠던 10문제 write-up 작성하기
etc.../빡공팟(P4C) 4기 2022. 5. 8. 10:48

W3: 코드업 기초 100제 70번 대 이후 문제들 중 가장 어려웠던 10문제 write-up 작성하기 코드업 기초 (22.05.02 ~ 22.05.08) 코드업 마지막 과제로 71번부터 99번까지 풀어보았다 이번에는 정답률이 낮은 문제가 이전보다 많았고, 기초임에도 while문 탈출 조건을 제대로 고려하지 못해 틀린 문제가 몇몇 있었다 # 1079: [기초-통합] 원하는 문자가 입력될 때까지 반복 출력하기 [문제] 'q'가 입력될 때까지 입력한 문자를 계속 출력하는 프로그램을 작성해보자 [입력] 문자들이 1개씩 계속해서 입력된다. [출력] q'가 입력될 때까지 입력된 문자를 줄을 바꿔 한 줄씩 출력한다. [풀이] #include int main(){ char input; while(1){ scanf("..

article thumbnail
[P4C] W2: 코드업 기초 100제 70번 이하 문제들 중 가장 어려웠던 5문제 write-up 작성하기
etc.../빡공팟(P4C) 4기 2022. 4. 29. 14:46

W2: 코드업 기초 100제 70번 이하 문제들 중 가장 어려웠던 5문제 write-up 작성하기 코드업 기초 (22.04.25 ~ 22.05.02) 저번주에 이어서 31~70번 문제를 풀어보았다 이번에는 비트연산자를 복습할 수 있어서 좋았던 것 같다 개인적으로 힌트가 나온 문제들은 최대한 다른 방식으로 풀어보려했다 ㅎ (if-else를 switch로 구현해본다던지,,) # 1038: [기초-산술연산] 정수 2개 입력받아 합 출력하기 1 [문제] 정수 2개를 입력받아 합을 출력하는 프로그램을 작성해보자. (단, 입력되는 정수는 -1073741824 ~ 1073741824 이다.) [입력] 2개의 정수가 공백으로 구분되어 입력된다. ** 주의: 계산의 결과가 int 범위를 넘어가는지를 잘 생각해 보아야 한..

article thumbnail
[P4C] W1: 코드업 기초 100제 20번~30번대 문제들 중 가장 어려웠던 5문제 write-up 작성하기
etc.../빡공팟(P4C) 4기 2022. 4. 23. 01:33

W1: 코드업 기초 100제 20번~30번대 문제들 중 가장 어려운 5문제 write-up 작성하기 코드업 기초100제 (22.04.18 ~ 22.04.24) 과제를 위해서 20-30번만 풀까 아니면 다 풀까 고민했는데 C는 기본중에 기본이고 거의 2년전에 배웠던 언어라서 다시 공부하고자하는 마음에 다 풀어보았다 ~.~ 개인적으로 너무 쉬워서 시간낭비라고 생각할 수도 있지만 알고리즘 말고 C언어 사용 자체에 대한 개념적인 부분들 중 까먹은 것들을 다시 상기시킬 수 있어서 괜찮았다고 생각한다 # 1020 : [기초-입출력] 주민번호 입력받아 형태 바꿔 출력하기 [문제] 주민번호는 다음과 같이 구성된다. XXXXXX-XXXXXXX 앞의 6자리는 생년월일(yymmdd)이고 뒤 7자리는 성별, 지역, 오류검출코..