Fascination
article thumbnail
[Dreamhack] Mitigation:NX & ASLR
Hacking Tech/System Hacking 2022. 9. 5. 05:40

Mitigation: NX & ASLR # 들어가며 r2s를 통한 공격자의 침입을 더 어렵게 하려면 공격자가 메모리에서 임의 버퍼의 주소를 알기 어렵게 하고 메모리 영역에서 불필요한 실행 권한을 제거하는 보호 기법을 추가로 도입해야 함 # ASLR Address Space Layout Randomization(ASLR): 바이너리가 실행될 마다 스택, 힙, 공유 라이브러리 등을 임의의 주소에 할당하는 보호 기법 ASLR은 커널에서 지원하는 보호 기법이며, 다음의 명령어로 확인 가능 리눅스에서 이 값은 0, 1, 또는 2의 값을 가질 수 있음 각 ASLR이 적용되는 메모리 영역은 다음과 같음 No ASLR(0): ASLR을 적용하지 않음 Conservative Randomization(1): 스택, 힙, ..

article thumbnail
[Dreamhack] Memory Corruption: Stack Buffer Overflow
Hacking Tech/System Hacking 2022. 9. 1. 19:24

Memory Corruption: Stack Buffer Overflow # 서론 모리스 웜: 스택 버퍼 오버플로우 공격을 통해 전파됨 CVE details에 따르면 스택 버퍼 오버플로우를 포함한 오버플로우 취약점은 이제까지 18,081개가 발견되어 전체에서 3번째로 많이 발견되었으며, 2019년에도 1,247개가 추가로 발견됨 # 스택 버퍼 오버플로우 1. 버퍼 오버플로우 1.1 버퍼 버퍼(Buffer): 데이터가 목적지로 이동되기 전에 보관되는 임시 저장소 데이터가 처리속도가 다른 두 장치가 있을 때, 이 둘 사이에 오가는 데이터를 임시로 저장해두는 것은 일종의 완충 작용을 함 예를 들어 키보드에서 데이터가 입력되는 속도보다 데이터를 처리하는 속도가 느린 프로그램이 있음 이런 키보드를 사용하는데 별도..

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
[C++] HackerRank : Equal Stacks
CODE/HackerRank 2021. 10. 3. 14:34

[문제] Equal Stacks | HackerRank Equalize the piles! www.hackerrank.com [문제 설명] - 그림을 보니 push된 반대 순서대로 pop이 되는 것을 확인할 수 있음 - 반환 값은 각각 pop하며 스택에 남은 수의 합이 같아지는 순간 그 합을 리턴함 [문제 풀이] - stack과는 다르게 아래서 깔린 수부터 pop되므로 reverse함수를 통해 순서를 변경해주어야 함 - sum 함수를 선언하여 각 벡터의 원소의 합을 각각 구함 - 세 합이 같은 수가 될때까지 각각의 합을 감소시켜 같은 수가 될 때까지 반복함 - 같은 수가 되는 순간 그 수를 반환시킴 [코드] int sum(vector a){ int sum=0; for(int i=0;im){ a-=h1.b..

article thumbnail
[DS] A Maze Problem (스택으로 미로 문제 풀기)
Study/Data Structure 2021. 9. 2. 22:09

# A Maze Problem - 목표: 입구로부터 출구까지의 경로를 찾음 - 조건: 0은 지나갈 수 있고, 1은 지나갈 수 없음. 직진이나 대각선 방향으로 이동이 가능 > 한 개의 프로그램은 한 개의 미로 경로를 탐색 > 현재 위치에서 이동 가능한 모든 방향 (북쪽부터 시작 → 시계방향으로 이동) 대하여 이동 가능 여부 판단 > 처음 발견한 이동 방향으로 마우스의 좌표를 수정 > 이동 가능한 방향이 없을 경우, 이전 위치로 되돌아감 > 스택을 이용하여 이동했던 위치를 기록하고 이전 위치로 찾아감. 만일 백 트랙을 시도했으나 스택이 비어있다면 결과는 실패 # 미로 찾기 스택 구현 - 구현: 경우의 수를 진행할 때는 스택 안에 쌓고, 벽에 막히면 pop하여 이전 단계까지 돌아옴 # 미로 문제의 특성 - a..

article thumbnail
[DS] Stack (스택)
Study/Data Structure 2021. 8. 31. 18:27

# 스택 - stack: 선형 리스트의 특별한 형태로, 책 또는 접시 같은 것들을 쌓아 둔 것을 의미 - 후입 선출(LIFO: Last-In, First-Out) 구조 - 함수 호출, 문법 검사, 연산식 평가 등에 활용 - 다음과 같이 원소들의 리스트로 정의 가능 S = [a0, a1, ...., an-1] - push: 원소 추가 / pop: 원소 삭제 - ex) 스택에 원소 a, b, c, d, e 삽입 및 삭제 # 스택 예제 (1) Balanced Parentheses - 괄호의 짝이 맞는지 확인하는 예제 [코드] // c++로 구현한 check_balance 함수 void check_balance(char* p) { struct Stack stack; create(stack, LINESIZE); ..