본문 바로가기

분류 전체보기

(152)
webgoat http Proxy 프록시 서버는 클라이언트와 서버 사이에 있습니다. 여기서는 프록시를 이용해 요청&응답을 기록하고 분석하는 것을 배울 수 있습니다. 첫 페이지에 프록시에 대한 설명이 나오고 ZAP를 이용해 설치하는 방법능 쭉 알려줍니다. 하지만 저는 burp suite를 사용할 것입니다. burp suite(https://portswigger.net/burp/communitydownload)로 가서 운영체제에 맞는 burp suite를 설치합니다. 저는 community edition으로 설치했습니다. 이 전에(https://codestudycafe.tistory.com/80) 했던 대로 proxy를 세팅해 줍니다. 이때 설정한 proxy가 여기서 말한 proxy입니다. 6번 밑에 있는 문제를 보면 요청을 가로채서 이것저..
[논문 리뷰] Neural Architecture Search: A Survey(NAS) Neural Architecture Search(NAS)는 인공지능을 만들어 주는 인공지능입니다. 보통 인공지능을 만들 때 모델을 만드는데 이 모델을 인공지능을 이용해서 만들어 보자는 것입니다. 이 인공지능의 컨셉과 발전 과정 집중해서 이야기해 보겠습니다.기본 전략3가지 개념을 알아야 합니다. search space : dense net, convolution, skip connection 등 여러 레이어가 있습니다.search strategy : search space를 어떻게 탐색할지 정합니다.performance estimation strategy : 찾은 아키텍쳐가 얼마나 성능을 내는지 구합니다. 직접 트레이닝해도 되고 퍼포먼스를 예측하는 알고리즘을 도입할 수 있습니다. search strateg..
spring boot - post 전송(with data) 유저가 로그인을 한다고 가정해 봅시다. 그럼 아이디와 비번을 서버에 보낼 것입니다. 먼저 사람들이 입력을 하는 형식을 만들어 봅시다. user 밑에 model 패키지를 만들고 UserLoginRequest를 만듭니다. 이제 UserLoginRequest에 어떤 식으로 입력해야 하는지 적을 것입니다. 이름과 비번을 입력받는데 빈칸이면 안되니까 NotBlank annotation을 넣어줍니다.만약 NotBlank에서 에러가 발생하면 build.gradle에 마지막 문구를 추가해 줍니다.controllercontroller 패키지에는 아래와 같이 만듭니다. http://localhost:8080/open-api/user/login에 UserLoginRequest 형식으로 호출한다는 뜻입니다. 이걸로 로그인을 ..
spring boot - 데이터베이스 연결 백엔드에서는 데이터베이스에 있는 정보를 읽은 다음 적절한 정보들을 넘겨줍니다. 데이터베이스에 연결하는 법을 배워봅시다.우선 데이터베이스를 세팅합니다(https://codestudycafe.tistory.com/99). 저는 mysql과 workbench를 사용할 것입니다. 데이터베이스우선 데이터베이스를 설정합니다. id, name, password를 만들어 줍니다.PK는 primary key, NN은 not null, AI는 auto increase입니다. 오른쪽 아래 apply를 눌러 적용할 수 있습니다.spring boot resource 잍에 있는 application에 다음 정보를 넣습니다. ~~.yaml이 아니면 yaml으로 고쳐줍니다. 세팅한 값마다 다르니 각각이 어떤 의미인지 간단하게만 살펴..
2969 - 메뚜기 step 1더보기꽃잎이 많은 꽃은 절대 적은 꽃으로 이동할 수 없습니다. 그럼 꽃잎 수로 정렬을 한 다음 자기보다 더 많은 꽃만 고려해도 문제를 해결할 수 있습니다. 꽃잎 수로 정렬한 다음 문제를 해결합니다.step 2더보기dp[i][j] : i,j에 있는 꽃에 있을 때 이동할 수 있는 최대 횟수 이 dp를 어떻게든 구하면 이 문제를 해결할 수 있습니다.아래 그림에서 검은 칸에 메뚜기가 있다고 해봅시다. 이 칸에서의 dp값은 {빨간 칸에 있는 dp값의 최대값 + 1}입니다. 그럼 새로운 dp를 정의해 봅시다. Ldp[i][j] : i,j 포함 자기 왼쪽에 있는 모든 dp값들의 최댓값 이 dp를 왼쪽, 오른쪽, 위쪽, 아래쪽 모두 만들면 이 문제를 해결할 수 있습니다. 이것은 펜윅트리로 만들 수 있습니다...
webgoat http webgoat의 general을 보면 http에 대한 이야기가 나옵니다. 1번째 페이지에서는 http가 어떻게 움직이는지에 대한 설명이 나옵니다. 2번째 페이지에서 요청을 보낼 수 있습니다. 이름을 입력하라고 하는데 아무거나 입력해도 통과할 수 있습니다. f12나 ctrl + shift + i를 눌러 개발자 도구를 열어봅시다.여기의 네트워크 탭에서 어떤 통신이 오고갔는지 확인할 수 있습니다. 이름을 넣고 GO!를 누르면 attack1이라는 것이 보입니다. 이 영역을 누르면 해당 통신에 대한 정보를 볼 수 있습니다. 저희는 POST로 요청을 보냈다는 걸 알 수 있습니다. payload 탭에서는 보낸 정보도 확인할 수 있습니다. 3번 페이지에서는 보내는 요청이 GET인지 POST인지, magic number..
spring boot - api 구조 보통 프런트엔드에서 백엔드에 api를 호출하고 정보를 받아온 다음 그 정보를 화면에 보여줍니다. 그럼 백엔드에서 api를 받고 정보를 넘겨줄 수 있어야 하는데요, 어떤 식으로 진행이 되는지 알아봅시다.controllercontroller는 유저가 유저가 정보를 요청할 때 어떤 경로로 요청해야 하는지, 어떤 식으로 요청해야 하는지가 담겨 있습니다.파일은 src - main - java - com - example - streak 위치에 계속 만들것입니다. 해당 파일에 package로 health, controller를 만들고 java class로 healthController를 만듭니다. 여기에 다음과 같이 만듭니다. @Slf4j부터 만들면 알아서 import 부분이 만들어 집니다. 어노테이션(@~~)을 ..
webgoat 사용법 이제 webgoat를 시작해 보겠습니다.우선 계정부터 생성해 줍니다. 해당 계정으로 webgoat와 webwolf에 로그인 할 수 있습니다.webgoat는 피해자 컴퓨터라고 생각하면 되고 webwolf는 공격자 컴퓨터라고 생각하면 됩니다. webgoat의 webwolf 탭에서 webwolf에 대한 설명과 간다한 기능을 사용할 수 있습니다. 1에서는 webwolf 실행 방법이 있지만 이미 실행했으므로 넘어갑니다.2에서는 파일 업로드 기능에 대해 이야기합니다.3에서는 메일 함 기능과 실습이 있습니다. {webgoat 계정}@webgoat.org를 입력하고 메일을 보냅니다. 그럼 webwolf의 mailbox에서 메일을 받을 수 있습니다.  이제 코드를 입력하면 해당 과제를 클리어 할 수 있습니다. 왼쪽 위에..
[논문 구현] Encoder-Decoder with Atrous SeparableConvolution for Semantic Image Segmentation(DeepLabV3Plus) deepLabV3Plus는 이전 논문들과 다르게 모델 구조가 살짝 복잡합니다. 그래서 모델을 구현하는 것에 중점을 맞출 것입니다. 이전에 사용한 논문을 다시 가져왔습니다. atros conv는 기존의 conv를 변형한 것입니다. tensorflow 에서는 DepthwiseConv2D에 dilation_rate 속성을 주어 구현할 수 있는데 귀찮으니 ResNet50을 그대로 가져다 쓰겠습니다.모델 구현우선 512,512,3 크기를 입력받는다고 하겠습니다. keras.applications에서 ResNet을 가져옵니다. weights는 초기 가중치, include_top은 마지막 dense 레이어를 포함하는지 여부, input_tensor은 입력 크기입니다. 저희 모델의 큰 그림은 아래와 같습니다.여기서 *..
16324 - Jumbled String 문제 번역더보기subsequence :  문자열에서 일부 문자 하위 집합을 제거하여 얻은 문자열(ex. string에서 sing, i, sg 등)0과 1로 이루어진 비어있지 않은 문자열을 만들고 싶습니다. 이때, 문자열에서 subsequence가00인 것들의 개수, 01인 것들의 개수, 10인 것들의 개수, 11인 것들의 개수가 각각 $a$, $b$, $c$, $d$였으면 합니다. 이런 조건을 만족하는 문자열을 만드세요.step 1더보기$a$를 통해서 0의 개수를 알아낼 수 있습니다.$\frac{n(n-1)}{2} = a$인 $n$이 0의 개수입니다.같은 방법으로 1의 개수 역시 $d$를 통해 찾을 수 있습니다.이렇게 찾은 0, 1의 개수를 각각 $n$, $m$이라고 합시다.step 2더보기어떤 1을 잡..