본문 바로가기

반응형

old

(225)
LeetCode 17. Letter Combinations of a Phone Number 자바 문제 풀이 문제 LeetCode - The World's Leading Online Programming Learning Platform 문제 해결 방법 이 문제는 모든 조합을 찾는 문제입니다. 조합을 찾는 문제이므로, 백트래킹 알고리즘을 사용할수 있습니다. 부분문자열과 순열, 그리고 조합의 차이점, 경우의 수란? 백트래킹은 가능한 모든 해를 탐색해야 할 때 혹은 모든 가능한 조합을 고려해야 할 때 효율적이며, 위 문제는 가능한 모든 조합을 찾는 문제입니다. backtracking 알고리즘이란? 알고리즘 각 숫자에 대응되는 문자을 어레이에 미리 final로 선언합니다. 0 혹은 null일경우 빈 list를 리턴합니다. 재귀함수를 시작합니다. 한 문자를 선택하여, 시작 가능한 모든 수를 탐색하고, 스트링빌더에 추가합..
LeetCode 2469. Convert the Temperature 자바 문제 풀이 문제 Convert the Temperature - LeetCode 문제 해결 방법 double 어레이를 선언하고 맞는 수를 입력할수 있는지 물어보는 문제입니다. Github Link https://github.com/eunhanlee/LeetCode_2469_ConverttheTemperature_Solution 시간복잡도: O(1), 공간복잡도: O(1) public class Solution { /** * Converts a temperature value from Celsius to Kelvin and Fahrenheit. * * @param celsius the temperature value in Celsius * @return an array containing the converted te..
웹 해킹 예제: 인증과 인가 취약점_CTF: Write 목표 계정 sfUser / sfUser1234 로 로그인한 뒤, 공지사항에 게시글을 작성하세요! 연습한 웹싸이트 http://ctf.segfaulthub.com:3481/auth5/ 공격 공격순서 일단 로그인 아이디와 비밀번호가 주어졌으므로, 일단 로그인을해서 공지사항과 게시글을 읽어본다 글쓰기 혹은 글수정 소스코드에서 찾기 위 리스트는 웹싸이트 접속후, 아이디와 비밀번호로 로그인하여, 공지사항의 글까지 클릭하기까지 사용된 요청과 응답 리스트이다. 위 소스 코드들을 하나씩 읽어가며 혹시 글 작성이나 글 수정을 주석처리하여 숨겨놨는지 확인한다. 그런게 없는것을 확인. 소스코드에 숨겨논 글작성 버튼이 없다 이때에는 위의 URL을 유심히 살펴본다 웹 개발자는 HTTP주소를 아래와 같이 설정했다 /auth5/i..
LeetCode 1470. Shuffle the Array 자바 문제 풀이 문제 Shuffle the Array - LeetCode 문제 해결 방법 논리적으로 잘 풀어서 반복문을 사용할수 있는지 시험하는 문제입니다. Github Link https://github.com/eunhanlee/LeetCode_1470_ShuffletheArray_Solution 시간복잡도: O(n), 공간복잡도: O(n) public class Solution { /** * 주어진 요소의 개수 n을 기준으로 정수 배열을 섞습니다. * * @param nums 입력 정수 배열 * @param n 섞을 요소의 개수 * @return 섞인 배열 */ public int[] shuffle(int[] nums, int n) { int[] result = new int[nums.length]; for (int..
Gradle과 Maven을 IntelliJ IDEA에 설정하는 법 목표 Gradle과 Maven을 IntelliJ IDEA에 설정하는 법을 배워봅시다. Gradle은 Groovy 기반의 빌드 도구로, Java 프로젝트의 빌드와 의존성 관리를 지원합니다. Maven은 XML 기반의 빌드 도구로, Java 프로젝트의 빌드와 의존성 관리를 지원합니다. 필요한 tools IntelliJ IDEA: Java 개발용 통합 개발 환경 Gradle: Gradle 빌드 도구 (설치가 필요한 경우) Maven: Maven 빌드 도구 (설치가 필요한 경우) Gradle 설정 IntelliJ IDEA를 엽니다. 프로젝트 창에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "Open Module Settings"를 선택합니다. "Project Settings" 대화상자에서 왼쪽 패널에서 "Pr..
사이버 보안: SSRF 란 정의 SSRF(Server Side Request Forgery)는 서버 측 요청 위조를 의미하는 웹 보안 취약점입니다. 이 취약점은 공격자가 목표 서버로부터 다른 내부 또는 외부 리소스로 요청을 보낼 수 있게 해주는 것을 의미합니다. SSRF를 통해 공격자는 서버의 제한이나 보안 조치를 우회하여 악의적인 요청을 보낼 수 있습니다. 하지만 실무에서는 SSRF 취약점이 발생할 수 있는 위험한 상황이 많지 않습니다. URL을 파라미터로 전달받는 경우가 거의 없기 떄문입니다. 취약점 발생 지점 리스트 SSRF 취약점은 주로 입력 유효성 검사가 부족하거나, 신뢰할 수 없는 사용자 입력을 처리하는 기능에서 발생합니다. 서버가 외부 리소스에 액세스해야 하는 기능을 갖춘 웹 애플리케이션에서 특히 취약성이 높습니다. ..
SSRF 공격기법 리스트 공격 예제 1 import requests def ssrf_attack(url): response = requests.get(url) return response.text # 공격자가 조작 가능한 URL target_url = "" # SSRF 요청 전송 result = ssrf_attack(target_url) # 응답 출력 print(result) 이 예제에서는 requests 라이브러리를 사용하여 공격자가 조작 가능한 target_url로부터 HTTP GET 요청을 보내는 ssrf_attack() 함수가 정의되어 있습니다. 이를 통해 공격자는 취약한 웹사이트의 SSRF 취약점을 이용하여 내부 리소스에 액세스하고 응답을 받을 수 있습니다. 공격 예제 2 import requests def steal_..
mysql 기초 명령어 정리 정의 MySQL 명령어는 데이터베이스 관리 시스템인 MySQL에서 데이터베이스, 테이블, 레코드 등을 관리하기 위해 사용되는 명령어입니다. 종류 MySQL 명령어는 다음과 같이 종류로 나눌 수 있습니다: DDL (Data Definition Language): 데이터베이스, 테이블 등의 구조를 정의하고 조작하는 명령어입니다. DML (Data Manipulation Language): 데이터를 삽입, 조회, 수정, 삭제하는 명령어입니다. DCL (Data Control Language): 데이터베이스 사용자 및 권한 관리를 위한 명령어입니다. TCL (Transaction Control Language): 트랜잭션 관리를 위한 명령어입니다. DQL (Data Query Language): 데이터 조회를 ..

반응형