일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- War Game
- ftz
- 시간복잡도
- c언어
- C
- 큐
- PHP
- web
- 백준
- level13
- Java
- HTML
- Stack
- OSI
- 파일 시스템
- 암호수학
- 미로 탐색 알고리즘
- System
- pwnable.kr
- 두근두근 자료구조
- 정렬 알고리즘
- LoB
- ftz level13
- windosws wbcs
- 재귀
- windosw 문자열
- 파이썬
- 스택
- SWiFT
- 자료구조
- Today
- Total
목록모두 보기 (257)
나의 기록, 현진록
pwnable.krpasscode main 함수에서는 welcome()login()순으로 함수를 호출한다. welcome() char[100]의 name 배열에 %100s 때문에 100칸만 입력 받을 수 있다. -0x70이 name 주소이다. login()에서 scanf()를 보자. scanf("%d", passcode); &passcode가 아니다. 즉 passcode의 값인 주소에 입력 받는 것이다. -0x10가 passcode1 주소이다. name부터 passcode1 까지의 거리는 0x60이고, 10진수로는 96이다. name에 100칸을 입력 받을 수 있고 100-96인 4byte를 덮을 수 있다. 4byte는 주소를 입력하기 좋은 크기이다. 아마도 주소 입력을 요구하는 것 같다. 마침 logi..
두근두근 자료구조2장 연습문제 본 글은 작성자가 직접 작성한 문서를 캡처하여 발행한 글입니다.
두근두근 자료구조 본 글은 작성자가 직접 작성한 문서를 캡처하여 발행한 글입니다.
프로세스 교착 상태에 대한 해결방안 교착 상태(Dead Lock)란? 교착 상태란 두 개 이상의 작업이 대기 중일 때 아무런 작업도 실행하지 못하는 상태를 말한다. 예를 들어 문 앞에 닫으려는 자와 열려는 자가 동시에 있을 경우, 사다리에 내려오려는 자와 올라가려는 자가 동시에 있는 경우가 교착상태이다. 운영체제의 작업 처리 방식 중 다중 프로그래밍 환경에서 흔히 발생하는 문제이며, 이를 해결할 방법은 없으나 현재는 운영체제마다 각각의 방식대로 대응하고 있다. 교착 상태의 조건 1971년에 E. G. 코프만 교수는 교착 상태 발생 조건을 네 가지로 정리했다.상호배제 : 한번에 하나의 프로세스가 하나의 자원을 점유할 수 있어야 한다.점유대기 : 프로세스가 자원을 점유한 상태에서 다른 프로세스에 할당되어 있..
pwnable.krbof func 함수 실행 deadbeef 인자로 인해 key가 초기화되어 있다. overflowme 배열에 gets 입력 key == cafebabe 와 같으면 /bin/sh 실행 func+40 : ebp+8과 cafebabe를 비교한다. func+29 : 현재 ebp는 ebp-2c ebp-2c에서 ebp+8까지의 거리는 52 52바이트부터 cafebabe를 입력한다.
pwnable.kr collision hashcode 와 check_pass의 리턴 값이 같아야 한다. check_pass 함수는 문자열을 인자로 받아 정수형으로 캐스팅 후 4바이트씩 5번 더한 값을 res에 저장 후 리턴한다. 21DD09EC / 5 = 6C5CEC8 6C5CEC8 * 5 = 21DD09E8 21DD09EC와 21DD09E8는 서로 다르다. 4byte가 작기 때문에 6C5CEC8을 4번 더한 후 6C5CECC를 더해주면 된다.
확장 유클리드 알고리즘 유클리드 알고리즘이란 두 수의 최대공약수를 구하는 방법이다. 12345678910111213141516171819202122232425262728#include void main() { int a, b; int r, r1, r2, q[50] = {0}; int s[50] = { 1,0 }; int t[50] = { 0,1 }; printf("a, b = ? "); scanf("%d %d", &a, &b); r = a; r1 = b; int count = 0; while (r1 >= 1) { q[count+1] = r / r1; r2 = r%r1; if (count >= 2) { s[count] = s[count - 2] - q[count-1]*s[count - 1]; t[count..
pwnable.krfd .a를 인자로 하여 실행 했더니 리눅스 파일 입출력에 대해 공부하라고 반응하였다. 코드 분석 atoi 함수는 문자열을 정수로 변환하는 함수이다. 아스키코드 값을 이용한다. fd에는 인자로 받은 문자열을 정수로 바꾸어 0x1234 만큼 뺀으로 초기화된다. 0x1234는 16진수로서 10진수로 바꾸면 4660이다. 다음은 read 함수이다. read(int fd, void *buf, size) fd는 파일 디스크립터 *buf는 read할 버퍼이다. size는 얼마만큼 읽은 것인지에 대한 크기이다. fd 파일 디스크립터란 파일을 관리하기 위해 운영체제가 요구하는 정보이다. 리눅스의 경우 파일 디스크립터는 다음과 같다. 0인 경우 : 표준 입력1인 경우 표준 출력2인 경우 표준 에러 이와..
pwnable.kr 접속하기 pwnable.kr 검색 후 이동 좌측 상단 Play 클릭 첫번째 문제인 fd 클릭 fd 문제에 접속하기 위한 정보 프로토콜 : ssh ID : fd 호스트 : pwnable.kr 포트 2222 아래와 같은 방법으로 접속
삽입 정렬 삽입 정렬은 한 번에 한 항목씩 최종 정렬된 배열에서 자신의 위치를 찾아 삽입함으로 정렬을 완성하는 알고리즘이다. 시간 복잡도는 평균 O(n2)으로 퀵 정렬이나, 힙 정렬 또는 병합 정렬과 같은 고급 알고리즘보다 큰 목록에서 비효율적이다. 시간 복잡도의 최상은 O(n), 최악은 O(n2)이다. 다음 영상은 삽입 정렬의 동작 방식이다. 12345678910111213141516171819#include void insertion_sort(int arr[], int len) { for (int i = 1; i = 0 && key