728x90
반응형

FTP - 파일전송

HTTP - 웹서비스 - 80/TCP

SSH - 원격접속

Talent - 원격접속, 파일전송

Snmp - 장비로그전송

 

sudo service ssh start

 

 

putty

- 여러가지 kye값들을 관리하기 위해 사용

 

접속PC(관리자PC) -----proxy서버(접근통제)----ssh--->: 서버

 

 

Root 권한 접속 가능하게 설정

sudo vim /etc/ssh/sshd_config

 

 

anonymous로 접속하게 설정

경로 : kali@kali:/etc

sudo vim vsftpd.conf

 

anonymous_enable=YES

728x90

'IT보안 > 모의해킹' 카테고리의 다른 글

칼리리눅스  (0) 2026.02.02
모의해킹 - 환경 구성  (0) 2026.01.25
모의해킹  (0) 2026.01.24
728x90
반응형

칼리리눅스 사용 이유

1. 오픈소스(파이썬)

2. 윈도우에서 사용 가능

 

 

칼리리눅스 공부 방법

- 리눅스 기반(Debian 명령어 숙지 필수)

- 보안 중심으로 공부 필요

- 주요정보통신기반시설 기술적 취약점 분석·평가 방법 가이드를 보면서 명령어 매칭

- 메타스플로잇(Ruby 기반)

- 깃허브(github)

- exploit-db.com

728x90

'IT보안 > 모의해킹' 카테고리의 다른 글

칼리 기본 명령어  (0) 2026.02.09
모의해킹 - 환경 구성  (0) 2026.01.25
모의해킹  (0) 2026.01.24
728x90
반응형

1. 호스트 OS에 직접 설치

장점 : PC가 저용량일 때 유리 

단점 : 공격대상과 분리가 안됨, 업무와 분리가 완됨

 

2. 가상 환경에 설치

장점 : 여러 환경(요소)를 분리시켜서 실행 가능 => 실 호스트 OS와 동일하게 구축 가능

단점 : RAM 용량을 많이 차지함

 

3. 도커 컨테이너 환경

장점 : 가상 환경보다 경량화로 사용할 수 있음

단점 : 윈도우 환경에서 오버헤드가 발생할 수 있음

 

4. vmware (ESXi)서버에 구축

- 실제 업무 환경

728x90

'IT보안 > 모의해킹' 카테고리의 다른 글

칼리 기본 명령어  (0) 2026.02.09
칼리리눅스  (0) 2026.02.02
모의해킹  (0) 2026.01.24
728x90
반응형

모의해킹(Pentration Testing)

  • 해커와 동일한 환경과 조건, 기술을 가지고 시스템, 네트워크, 애플리케이션 등의 보안 취약점을 식별하고, 그 취약점을 실제로 악용할 수 있는지를 검증하는 과정을 의미
  • Pentration : 침투, 침입, 침해 + TEST : 테스트 => Pentest

리버싱 분석

  • 역공학분석, S/W분석 → 게임, HTS(MTS 모바일, WTS 웹), 보안솔루션 등
  • 소스코드진단(시큐어코딩진당 - S/W보안 진단원)

 

PCI(Pentration Testing Guide)

  • 지불 카드 산업 데이터 표준 요구 사항에 대한 침투 테스트 기법을 정의

 

체크리스트

  • OWQSP
  • 주요정보통신기반시설 기술적 취약점 분석·평가 방법 상세가이드
  • 전자정부 SW 개발 운영자를 위한 소프트웨어 개발 보안 가이드

 

모의해킹 절차

  1. 사전협의단계
  2. 정보수집단계
  3. 위협모델링 단계
  4. 취약점 분석 단계
  5. 침투단계
  6. 내부침투단계
728x90

'IT보안 > 모의해킹' 카테고리의 다른 글

칼리 기본 명령어  (0) 2026.02.09
칼리리눅스  (0) 2026.02.02
모의해킹 - 환경 구성  (0) 2026.01.25

728x90
반응형

id 불러오기

 

① {{#article}}{{/article}} 범위 형식으로 지정한 경우

  • {{id}}만 사용해도 됨
{{#article}}
<tr>
    <th>{{id}}</th>
    <td>{{title}}</td>
    <td>{{content}}</td>
</tr>
{{/article}}

 

②범위를 지정하지 않은 경우

  • 점(.)을 사용해 {{article.id}}라고 표시해야 됨
<a href="/articles/{{article.id}}/edit">Edit</a>

 

 

@GetMapping()

뷰 페이지에서는 변수를 사용할 때 중괄호 두개 ({{}}) 사용

컨트롤러에서 URL 변수를 사용할 때는 하나만 ({}) 만 사용


 

클라이언트와 서버 간 처리 흐름

 

① MVC(Model-View-Controller) : 서버 역할을 분담해 처리하는 기법

② JPA(Java Persisitence API): 서버와 DB 간 소통에 관여하는 기술

③ SQL(Structured Query Language): DB 데이터를 관리하는 언어

④ HTTP(HyperText Transfer Protocol): 데이터를 주고받기 위한 통신 규약

 

 

HTTP 메서드

프로토콜(protocol)

클라이언트와 서버 간에 데이터를 전송할 때는 다양한 통신 규약(=프로토콜)을 따

컴퓨터 간에 원활하게 통신하기 위해 사용하는 전 세계 표준

 

  •  FTP(File Transfer Protocol) : 파일 전송을 위한 프로토콜
  • SMTP(Simple Mail Transfer Protocol) : 이메일 전송을 위한 프로토콜
  • HTTP(HyperText Transfer Protocol) : 웹 서비스에 사용하는 프로토콜
    • POST : 데이터 생성 요청
    • GET : 데이터 조회 요청
    • PATCH(PUT) : 데이터 수정 요청
    • DELETE : 데이터 삭제 요청

 

데이터 관리 SQL HTTP
데이터 생성(Create) INSERT POST
데이터 생성(Read) SELECT GET
데이터 생성(Update) UPDATE PATCH(PUT)
데이터 생성(Delete) DELETE DELETE

 

728x90

'IT > Spring' 카테고리의 다른 글

[Spring] CRUD:Read  (0) 2024.01.14
[Spring] 롬복  (0) 2024.01.14
[Spring]  (0) 2024.01.12
728x90
반응형

데이터 조회 과정

 

① 사용자가 조회할 데이터를 웹 페이지에서 URL 요청을 보냄

 서버의 Controller가 요청을 받아 해당 URL에서 찾으려는 정보를 Repostiory에 전달

 리파지터리는 정보를 가지고 DB에 데이터 조회를 요청

 DB는 해당 데이터를 찾아 이를 Entity로 반환

 반환된 엔티티는 model을 통해 view template으로 전달됨

최종적으로 결과 view page가 완성돼 사용자의 화면에 출력

 


 URL 요청을 전달받음

@GetMapping("~~/{id}")

@GetMapping("/~~/{id}")
    public String show(@PathVariable Long id, Model model) {
}

 

@PathVarialbe 어노테이션을 붙여야 URL의 id를 가져올 수 있음

 

Repostitory는 특별히 조회된 데이터가 없는 경우 처리해야 함

 

방법 1

Optional<Article> Entity = Repository.findById(id);

방법2

Article Entity = Repository.findById(id).orElse(null);

 


  id로 DB에서 조회한 데이터를 모델에 article이라는 이름으로 등록

model.addAttribute("article", articleEntity);

 


반환 데이터 타입 불일치 문제 해결

 

1. 메서드가 반환하는 데이터 타입을 사용자가 작성한 데이터 타입으로 casting(형변환)하기

List<Article> articleEntityList = (List<Article>) articleRespository.findAll();

2. 사용자가 작성한 데이터 타입을 메서드가 반환하는 데이터 타입으로 수정하기

Iterable<Article> articleEntityList = articleRespository.findAll();

 

3, 메서드의 반환 데이터 타입을 원하는 타입으로 오버라이딩하기

// repository 파일

public interface ArticleRepository extends CrudRepository<Article, Long> {
    @Override
    ArrayList<Article> findAll(); // Iterable → ArrayList 수정
}
728x90

'IT > Spring' 카테고리의 다른 글

[Spring] CRUD:Update 01  (0) 2024.01.17
[Spring] 롬복  (0) 2024.01.14
[Spring]  (0) 2024.01.12
728x90
반응형

롬복

코드를 간소화해주는 라이브러리

 

 

롬복 설치 방법

① build.gradle 파일 > dependencies에 아래와 같은 코드 추가하기

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

 

②Load Gradle Changes 아이콘 클릭 후 자동 다운로드

 

 

롬복 사용 방법

@AllArgsConstructor 어노테이션

  • 생성자 자동 생성

 

@ToString

  • toString() 메서드 자동 생성

 

@Slf4j

  • 로깅 기능 사용
  • 실제 서버에서 println()을 사용하면 데이터 검증 불가능, 서버 성능 악영향 끼
// 사용 예시
log.info(form.toString());

 

728x90

'IT > Spring' 카테고리의 다른 글

[Spring] CRUD:Update 01  (0) 2024.01.17
[Spring] CRUD:Read  (0) 2024.01.14
[Spring]  (0) 2024.01.12
728x90
반응형

🔉문제

2019 KAKAO BLIND RECRUITMENT - 실패율

 

 

 

def solution(N, stages):
    
    # 스테이지별 도전자 수
    challenger = [0] * (N + 2)
    for stage in stages:
        challenger[stage] += 1
    
    # 스테이지별 실패율
    fails = {}
    total = len(stages)
    
    # 각 스테이지를 순회하며, 실패율 계산
    for i in range(1, N+1):
        if challenger[i] == 0: # 도전하는 사람 X == 실패율 0
            fails[i] = 0
        else:
            fails[i] = challenger[i] / total
            total -= challenger[i]
            
    result = sorted(fails, key=lambda x : fails[x], reverse=True)
    return result

 


  N번째 스테이지를 클리어한 사용자를 저장하려면 N+1에 저장, N+1 스테이지를 클리어한 사용자를 저장하려면 N+2에 저장(리스트가 0부터 시작하기 때문) 참고

 

해당 스테이지에 chanllenger가 없다는 것은 이미 스테이지를 깼든 오지 못했든 실패율이 0이라는 뜻이다.

 

➌ fail은 딕셔너리로 키: 각 사용자를 가리키는 숫자, 값: 실패율

 

적용할 점

딕셔너리를 이용해 정렬을 반환할 수 있다.

728x90
728x90
반응형

코딩 테스트 합격자 되기 1회독 스터디 내용입니다.

코딩테스트 합격자 되기 - 05 배열 : 네이버 카페 (naver.com)

 

 

배열

인덱스와 값을 일대일 대응해 관리하는 자료구조

차원과는 무관하게 메모리에 연속 할당됨


 

배열 선언 방법

1차원

리스트 생성자를 사용하는 방법

arr = [0 for _ in range(6)]     # [0, 0, 0, 0, 0, 0]

리스트 컴프리헨션을 활용하는 방법

arr = [0 for _ in range(6)]     # [0, 0, 0, 0, 0, 0]

 

 

2차원

리스트 생성자를 사용하는 방법

arr = [[1, 2, 3], [4, 5, 6]] # ➊ 2행 3열 2차원 배열을 표현하는 리스트 선언

리스트 컴프리헨션을 활용하는 방법

# 크기가 3 * 4인 리스트를 선언하는 예
arr = [[i]*4 for i in range(3)] # [[0, 0, 0, 0], [1, 1, 1, 1], [2, 2, 2, 2]]

 

⭐배열을 선택할 때 고려할 점

  1. 할당할 수 있는 메모리 크기
    • 데이터가 너무 많으면 런타임 에러 발생
    • 1차원은 1000만개, 2차원은 3000 * 3000 크기를 최대로 생
  2. 중간에 데이터 삽입이 많은지
    • 배열은 선형 자료구조
    • 중간이나 처음에 데이터를 빈번이 삽입하면 시간 복잡도가 높아짐(마지막에 넣을때는 한번에 가능

 

리스트 컴프리헨션으로 데이터에 특정 연산 적

리스트 내 모든 데이터 제곱

numbers = [1, 2, 3, 4, 5]
squares = [num**2 for num in numbers] # [1, 4, 9, 16, 25]
728x90
728x90
반응형

DTO(Data Transfer Object)

폼 데이터에 실어 보낸 데이터는 서버의 컨트롤러가 객체에 담아 받는데, 이 객체를 DTO라고 함

 

JPA

자바 언어로 DB에 명령을 내리게 하는 도구로, 데이터를 객체 지향적으로 관리하도록 도와줌

- entity(엔티티) : 자바 객체를 DB가 이해할 수 있게 만든 것으로, 이를 기반으로 테이블이 만들어짐

- repository(리파지터리) : DB 속 테이블에 저장 및 관리될 수 있게 하는 인터페이스

 

DTO를 DB에 저장하는 과정

DTO를 엔티티로 변환한 후 리파지터리를 이용해 엔티티를 DB에 저장

 

DI(Dependency Injection, 의존성 주입)

외부에서 만들어진 객체를 필요한 곳으로 가져오는 기법

스프링부트는 @Autowired 어노테이션으로 의존성을 주입할 수 있다.

728x90

'IT > Spring' 카테고리의 다른 글

[Spring] CRUD:Update 01  (0) 2024.01.17
[Spring] CRUD:Read  (0) 2024.01.14
[Spring] 롬복  (0) 2024.01.14

+ Recent posts