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