본문 바로가기

분류 전체보기

(128)
쉘 털어보기 바인딩 쉘개념기본적인 흐름은 다음과 같습니다.피해자가 공격자에게 포트를 열어줍니다. 해당 포트로 들어오면 권한을 획득할 수 있습니다.공격자가 해당 포트로 접속을 합니다.물론 피해자가 스스로 열어줄 일은 없으니 이걸 열 수 있도록 공격자가 열심히 조작합니다.방화벽에서 특정 포트만 허용해 줌으로써 막을 수 있습니다.실습리눅스였다면 nc 명령어로 쉽게 할 수 있지만 윈도우는 그 명령어가 없기 때문에 윈도우의 특정 포트를 열어주는 프로그램을 설치합니다. https://github.com/cyberisltd/NcatPortable에 있 ncat.exe를 설치하고 설치한 위치에서 cmd 창을 엽니다.해당 창에서 ncat.exe -nlvp 7777 -e cmd.exe 를 입력합니다. -n : 호스트명과 포트를 이름이..
6612 - 개미의 이동 step 1더보기개미의 위치에만 집중을 해봅시다. 개미가 서로 통과한다고 가정할 때의 위치와 개미가 충돌할 때의 위치가 동일합니다. 즉, 어떤 개미인지는 모르지만 언제 어느 방향으로 개미가 떨어질지는 구할 수 있습니다.step 2더보기개미들의 순서에 집중해 봅시다. 왼쪽 개미부터 1, 2, ..., N으로 번호를 매겨봅시다. 개미끼리 서로 뛰어넘지 못하므로 제일 먼저 왼쪽으로 떨어지는 개미는 1번 개미, 다음으로 떨어지는 개미는 2번 개미,... 이런 식으로 떨어집니다. 오른쪽도 마찬가지로 제일 먼저 떨어지는 개미는 N번 개미, 다음은 N-1번 개미,... 이런 식입니다.언제 어느 방향으로 떨어지는지 알고 있으므로 그때 떨어지는 개미가 어떤 개미인지도 알 수 있습니다. 그럼 이게 모든 개미 변형 문제를 ..
11868 - 님 게임 2 step 1더보기우선 정답부터 이야기하고 가겠습니다. 나온 모든 수를 xor을 한 값이 0이면 후공 승, 아니면 선공 승입니다.놓여진 돌의 개수를 xor한 값을 그런디 넘버라고 하겠습니다. (원래 그런디 넘버의 정의는 많이 복잡하지만 이 문제에서의 그런디 넘버는 xor로 정해집니다.)만약 그런디 넘버가 0이 아니라면 이 값이 0이 되도록 돌을 가져갈 수 있습니다.만약 그런디 넘버가 0이라면 어떻게 돌을 가져가도 이 값은 0이 될 수 없습니다.step 2더보기다음 예시를 봅시다. 29 2 이 예시에서 그런디 넘버는 9 ^ 2 = 11입니다. 그리고 9개가 있는 돌더미에서 7개를 가져가면 그런디 넘버를 2 ^ 2 = 0으로 만들 수 있습니다.그런디 넘버$G$의 최상위 비트에 집중해 봅시다. 그럼 해당 비트를..
24231 - 해석 step 1더보기dp[i][j] : i번째 부터 j번째 까지만 있다고 했을 때 만들 수 있는 올바른 괄호 문자열의 개수step 2더보기dp[i][j]를 채운다고 생각해 봅시다. i번째 문자는 반드시 여는 괄호여야 합니다. 이 문자는 i+1, i+3. i+5,... 번째 문자와 짝을 이룰 수 있습니다(물론 그 문자는 닫는 괄호여야 합니다). 만약 k번째 문자와 짝을 이루었다면 dp[i][j] += dp[i+1][k-1] * dp[k+1][j]를 해줍니다.이런 식으로 dp를 채워나가면 됩니다. 탐색 순서는 j-i가 작은 순서대로 탐색하면 됩니다.코드더보기#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include..
kioptrix, DVWA 세팅 kioptrix 세팅kioptrix를 한번 세팅해 보겠습니다. kioptrix 공식 페이지(https://www.vulnhub.com/entry/kioptrix-level-1-1,22/)로 갑니다. 여기서 Download (Mirror):를 다운받고 압축을 풀어줍니다. 그리고 virtual box에서 새로 만들기를 클릭합니다.종류를 linux, 버전을 linux 2.2로 해줍니다. 가상 하드 디스크는 굳이 만들지 않도록 합시다. 이거 없으면 막 안된다고 하는데 일단 넘어가 줍니다. 설정 - 저장소 - 컨트롤러 : IDE의 제일 오른쪽 아이콘을 클릭합니다. 여기서 추가를 클릭하고 다운받은 파일을 추가해 줍니다. 그리고 네트워크 탭에 가서 이전에 해 준 것처럼 네트워크 설정을 해줍니다. DVWA 세팅vuln..
칼리 리눅스 설치 아주 기초적인 해킹을 실습하고 내용을 저장해 두는 페이지입니다. virtual box 설치칼리 리눅스는 os 중 하나로 해킹 관련 툴이 기본적으로 설치되어 있어 입문할 때 많이 씁니다. virtual box로 가상 환경을 하나 만들어 칼리 리눅스를 실행해 봅시다. virtual box 홈페이지(https://www.virtualbox.org/)에 있는 다운로드를 클릭합니다.그리고 os 환경에 맞는 virtual box를 다운로드합니다. 칼리 리눅스 설치kali linux 공식 홈페이지(https://www.kali.org/get-kali/#kali-platforms)로 갑니다. 쭉 아래로 내리다 보면Pre-built Virtual Machines라고 하면서 가상 환경에 설치하는 파일이 있습니다. 저희는 ..
23752 - 카드 잘 섞기 step 1더보기2번 쿼리는 그냥 하면 됩니다.1번 쿼리에서 카드 장수가 홀수인 경우만 생각해 봅시다. 카드 5장이 다음과 같이 있습니다. 카드의 위치는 위에서 부터, 0-base로 셉니다.카드의 인덱스를 2배 한 다음 절반씩 나누고 잘 끼워 넣습니다.그럼 카드의 장수를 $N$이라 할 때 각 카드의 처음 인덱스를 $a_i$라 할 때 셔플 후의 인덱스는 $(a_i*2)\%N$이 됩니다. 이 동작을 $z$번 반복하면 $a_i*2^z\%N$이 됩니다.step 2더보기카드의 장수가 짝수인 경우입니다. 제일 아래쪽 카드의 위치는 절대 바뀌지 않습니다.마지막 카드만 빼고 살펴봅시다. 5장일 때와 다르지 않습니다.즉 $1\,x\,y\,z((y-x)\%2==1)$ 쿼리는 $1\,x\,y-1\,z$과 완벽히 같습니다.코..
27086 - 점수 내기 step 1더보기수학토끼가 내야 하는 금액은 $O(N)$에 구할 수 있으니 신경쓰지 맙시다.$y=1$로 계산하고 마지막에 진짜 y를 곱해줍니다.$(x, \lceil 2*10^5 / x \rceil)$ 크기의 배열을 생각해 봅시다. 점수가 $X_i$인 학생은 $(X_i\%x, \lfloor X_i/x\rfloor)$ 칸에 들어가 있습니다. 아래는 각 점수별로 어떤 칸에 들어가는지 표시해 두었습니다. 각 열마다 해당 열에 있는 사람들의 몫의 합과 그 열에 있는 사람의 수를 저장해 둡니다. 아래 그림에서 칸에 있는 숫자는 해당 칸에 해당하는 사람의 수입니다.step 2더보기점수가 가장 낮은 사람을 봅시다. 이 사람은 모든 사람(같은 칸에 있는 사람 제외)과 비교를 해야 합니다. 어떤 칸에 사람이 있는지에 따라..
15807 - *빛*영*우* step 1더보기 https://www.acmicpc.net/problem/5419 step 2더보기그림을 반시계 방향으로 45도 돌린다고 생각해 봅시다. 그럼 위 문제를 푸는 것과 같습니다.새로운 좌표축 2개를 도입합니다. 하나는 $y=x$고 다른 하나는 $y=-x$입니다. 새로운 좌표 축에 맞춰 좌표를 재설정하고 위 문제를 해결합니다.축을 바꾸는 것을 해봅시다. 위 그림에서 점 $A$는 원래 축 기준 (1,3)에 있습니다. 그리고 새로운 축(빨간색) 기준으로는 (-2, 4)에 있습니다. 원래 축 기준 $x$좌표를 $X$, 원래 축 기준 $y$좌표를 $Y$라고 하면바뀐 축 기준 $x$좌표 : $X-Y$바뀐 축 기준 $y$좌표 : $X+Y$로 쉽게 계산할 수 있습니다. step 3더보기이제부터 모든 좌표..
opencv - 프로젝트 2 - 2. 카드 인식 이전 프로젝트(https://codestudycafe.tistory.com/47)에서 라벨링을 하는 툴을 만들었습니다. 먼저 이 툴을 이용해 라벨링을 해 줍니다.우선 이정도로만 만들고 머신러닝을 학습해 보겠습니다. 먼저 GPU를 사용할 수 있게 세팅을 해줍니다. 몇가지 필요한 설정을들 import한 다음 이미지 파일을 받아옵니다. 저는 data에 원본 이미지, filter에 라벨링한 이미지를 넣었습니다.  이미지를 다 가져오고 크기를 확인해 봅니다. 보니까 몇가지 문제가 있는 것 같네요. 우선 이미지가 너무 큽니다. U-net 논문에서는 572*572 이미지를 사용했는데 그것보다 4배 정도 큰 것 같네요. 그리고 label의 shape가 (8, 1356, 1018, 4)입니다. 마지막 차원이 1이길 바랬..