분류 전체보기

·System Hacking
Q. 어떤 웹 서버에 공개된 프로그램 assignment는 buffer overflow 공격에 취약한 것으로 알려져 있다.해당 프로그램을 다운로드 후 분석하여 print_password() 함수를 호출하고 비밀번호를 획득하라! 일단 해당 프로그램을 다운로드 후 다음과 같이 실행해보았다. A를 5번 입력하니 위와 같이 그대로 입력값을 출력해주는 프로그램인 것 같은데,이번엔 A를 많이 입력하니까 위와 같이 core dumped가 나오면서 버퍼 오버플로우가 발생한 것을 볼 수 있다.참고로 BOF 취약점을 분석할 때 주요 관심사는 "버퍼의 크기"와 "외부 입력"이다. 이제 gdb를 통해 어셈블리 코드를 확인해보도록 하자. 코드 분석 우선 목표로 하는 print_password 함수의 시작 주소값을 확보해놓음시작..
·System Hacking
다음 C프로그램은 그냥 stdin으로 입력된 값을 stdout으로 출력하는 간단한 echo 프로그램이다.그러나 이 프로그램에는 버퍼 오버플로우를 일으킬 수 있는 취약점이 존재한다. 코드를 수정하지 않고 해당 파일을 컴파일한 프로그램을 실행해서 do_something() 함수를 호출하는 것이 목표! #include #include #include void do_something(){ setreuid(0, 0); system("whoami"); printf("Congratulation!\n");}int main(){ int tmp = 0xFFFFFFFF; char buffer[20] = "AAAABBBBCCCCDDDDEEE"; fgets(buffer, 80, stdin); fputs(buffer, stdou..
·Linux
해당 포스팅은 rocky linux 기반으로 예제를 작성하였음 정보보안의 3요소?- 정보보안의 목적은 정보의 세 가지 성질 (CIA : 기밀성, 무결성, 가용성)을 유지하는 것 1. 기밀성 (Confidentiality)- 정보 자산에 접근할 수 있도록 인가된 사람이나 프로그램만이 "권한의 범위 내에서 정보에 접근"할 수 있도록 하는 성질- 비공개 정보를 누구나 열람할 수 있다면 기밀성이 손상된 상태 2. 무결성 (Integrity)- 정보 자산이 손상되진 않았는지, 일관성, 완전성을 유지하는 성질- 전송 혹은 보관된 데이터가 중간에 손실되거나 파손된다면 무결성을 잃은 것임 3. 가용성 (Availability)- 인가된 사람이나 프로그램이 "언제든지 정보 자산에 접근"할 수 있는 성질- 웹사이트 과부하..
·Linux
패키지 관리 시스템인 snap을 설치했는데, 위와 같이 enable 후 snap으로 프로그램을 install 하려고 하면error: too early for operation, device not yet seeded or device model not acknowledged이런 에러 문구가 났던 오류이다. 진짜 별의별 방법을 다해보고 SELinux 정책도 수정해보고 해봤는데 이런건 전혀 해결하는데 도움이 안됐고.... 아래 방법으로 성공할 수 있었다! $ sudo dnf install epel-release$ sudo dnf upgrade$ sudo dnf install snapd$ sudo systemctl enable --now snapd.socket$ sudo ln -s /var/lib/snapd/..
·Python
자료구조와 우선순위 큐를 사용하면 풀 수 있는 문제였다. 풀면서 설명이 잘 이해가 안되어서 제일 헷갈렸던 점이 있는데, 바로 예시 입출력에서 볼 수 있는 2 3 2 부분이다.2 3 2가 모두 선물 3개라고 이해하면 위 예제의 출력이 모순적인데, 맨 앞의 숫자 2가 충전할 선물의 개수이고 바로 뒤에 따라오는 나머지 숫자들의 나열이 선물의 개수만큼 가치가 입력되어 진 것이다. 즉 2(개) 3(선물1의 가치) 2(선물2의 가치) 이런 셈이라고 이해하면 쉽다! import sysimport heapqN = int(input())heap = [] for _ in range(N): data = list(map(int, sys.stdin.readline().split())) if data[0] == 0: ..
·Python
이번 문제는 앞서 풀었던 최대힙, 최소힙과 유사한 문제이지만 추가로 절댓값이 조건으로 추가된 문제이다. import sysimport heapqN = int(input())heap = [] # 비어있는 배열에서 시작for _ in range(N): calc = list(map(int, sys.stdin.readline().split())) for num in calc: if num == 0: if heap: print(heapq.heappop(heap)[1]) else: print(0) else: heapq.heappush(heap, (abs(num), num)) heappush로 숫자를 삽입할 때 튜플을 이용하는 것이 포인트였다..
여백 ::
'분류 전체보기' 카테고리의 글 목록 (3 Page)