| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- python
- 와이어샤크
- 유석종교수님
- Linux
- cgroup
- basicrce3
- cloud
- CodeEngn
- Reversing
- beebox
- EC2
- backjoon
- datastructure
- pwnable
- docker
- acc
- mount
- 자료구조
- SISS
- Dreamhack
- c
- htmlinjection
- 백준
- wireshark
- Reflected
- Systemhacking
- AWS
- System
- bWAPP
- fork-bomb
- Today
- Total
목록2022/05/22 (8)
Ctrl + Shift + ESC
문제 동호는 내년에 초등학교를 입학한다. 그래서 동호 어머니는 수학 선행 학습을 위해 쉽게 푸는 문제를 동호에게 주었다. 이 문제는 다음과 같다. 1을 한 번, 2를 두 번, 3을 세 번, 이런 식으로 1 2 2 3 3 3 4 4 4 4 5 .. 이러한 수열을 만들고 어느 일정한 구간을 주면 그 구간의 합을 구하는 것이다. 하지만 동호는 현재 더 어려운 문제를 푸느라 바쁘기에 우리가 동호를 도와주자. 입력 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. 출력 첫 줄에 구간에 속하는 숫자의 합을 출력한다. 내 제출 a,b = map(int,input().split()) arr = [0] f..
문제 정수 집합 S가 주어졌을때, 다음 조건을 만족하는 구간 [A, B]를 좋은 구간이라고 한다. A와 B는 양의 정수이고, A < B를 만족한다. A ≤ x ≤ B를 만족하는 모든 정수 x가 집합 S에 속하지 않는다. 집합 S와 n이 주어졌을 때, n을 포함하는 좋은 구간의 개수를 구해보자. 입력 첫째 줄에 집합 S의 크기 L이 주어진다. 둘째 줄에는 집합에 포함된 정수가 주어진다. 셋째 줄에는 n이 주어진다. 출력 첫째 줄에 n을 포함하는 좋은 구간의 개수를 출력한다. 제한 1 ≤ L ≤ 50 집합 S에는 중복되는 정수가 없다. 집합 S에 포함된 모든 정수는 1보다 크거나 같고, 1,000보다 작거나 같다. 1 ≤ n ≤ (집합 S에서 가장 큰 정수) 내 제출 L = int(input()) lst =..
문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 출력 첫째 줄에는 산술평균을 출력한다. 소수점 이하 ..
문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. 내 ..
ls -l로 파일을 확인한 뒤에 flag 파일을 읽어보려 했으나 거절당했다. 그래서 cmd1.c 파일을 읽어보았다. #include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0; return r; } int main(int argc, char* argv[], char** envp){ putenv("PATH=/thankyouverymuch"); if(filter(argv[1])) return 0; system( argv[1] ); return 0; } filter() 함수에서 flag, sh, tmp를 사용하는 것을 막고 있었다. ..
전체 코드는 여기에서 볼 수 있다. https://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html //Main Function int main(void) { int choice1; printf("\n"); printf("\n"); printf("\n"); printf("\n 222 111 "); printf("\n 222 222 11111 "); printf("\n 222 222 11 111 "); printf("\n 222 111 "); printf("\n 222 111 "); printf("\n"); printf("\n%c%c%c%c%c %c%c %c%c %c%c%c%c%c %c %c ", club, club, cl..
정적 분석 IDA로 파일 열기 문제 파일을 정적분석하기 위해 앞서 배운 IDA를 사용했다. IDA를 실행하고, chall0.exe를 끌어넣는다. 파일이 정상적으로 열리면 다음과 같은 창이 나타난다. 위의 창에서는 문제 파일의 간략한 정보를 띄워준다. 바이너리의 아키텍처는 AMD64 (x86-64), 파일 포맷은 PE (Portable Executable) 구조라는 것을 알 수 있다. 이 정보들을 통해 본격적으로 분석하기 전, 분석에 도움이 되는 정보를 획득할 수 있다. 지금까지 과정을 성공적으로 마치면 위와 같은 창이 나타난다. 이는 바이너리에 디버깅 정보를 담고있는 심볼 경로가 존재하는데, 이를 찾아서 로드하겠냐는 질문창이다. 문제 출제자는 별도의 심볼(.pdb)을 제공하지 않았기 때문에 No를 클릭한..
서론 드림핵 워게임 중 rev-basic-0 문제를 푸는 코스이다. 실행 먼저 다운로드 받은 파일을 실행하여 프로그램이 어떤 식으로 동작하는지 확인해보았다. 워게임 문제와 같이 신뢰할 수 없는 프로그램을 실행할 때는 가상환경(VM)에서 실행하는 것이 바람직하다. 만약 문제 정보를 통해 프로그램의 동작방식이 예상이 간다면 굳이 실행하지 않고 정적분석을 먼저 시도해보는 것도 좋은 방법이다. 윈도우 운영체제에서 기본적으로 제공되는 Windows PowerShell에서 문제 파일을 실행해보았다. 문제 파일의 압축을 해제한 후, 실행해보면 Input : 이라는 문자열이 출력된다. 출력된 문자열 뒤에 AAAA를 입력한 후, 엔터를 치면 Wrong이 출력된다. 문제가 사용자에게 문자를 입력받고 프로그램 내부의 어떤 ..
