wrapper 클래스란?
기본 자료형을 참조형 자료처럼 사용하기 위한 클래스
- 기본 자료형: int, float, char, boolean과 같은 자료형. 정적 타이핑으로 작성되는 언어
- 참조형 자료형: 기본 자료형을 기초로 하여 만들어진 자료형. String, Araay, Map 등과 같은 클래스와 인터페이스, 열거형이 해당 => 컴퓨터 메모리에 저장된 데이터를 간접적으로 접근할 수 있는 값(=주소값)을 식별하고 저장하는 방식
기본 자료형 | 참조 자료형 |
byte | String(문자열) |
short | Array(배열) |
int | Enumeration(열거) |
long | Class(클래스) |
float | Interface(인터페이스) |
double | |
char | |
boolean |
기본 자료형을 감싸는 클래스
-> 기본 자료형의 값을 감싸 객체형태로 만든 것
-> 불변성을 가짐 => wrapper 클래스 안 객체의 값 변경 불가
wrapper 클래스 종류
- byte->Byte
- short->Short
- int->Integer
- long->Long
- double->Double
- char->Character
- float->Float
- boolean->Boolean
-> 기본 자료형을 감싼 것이기에 종류 또한 기본 자료형과 동일
wrapper 클래스를 사용하는 이유?
- 기본 자료형을 클래스로 랩핑하면 유용한 메서드를 제공할 수 있음
- 기본 자료형의 값을 단순히 값으로만 사용하지 않고 그 값에 대한 메서드를 사용
- null값을 이용하기 위해 사용
이보다 더 중요한 이유 -> 제네릭(Generic)
제네릭이란?
클래스 내부에서 사용할 데이터 타입을 외부에서 저장하는 기법
객체별로 다른 타입의 자료가 저장될 수 있도록 함
제네릭에 사용되는 매개변수 T -> Object 자료형만 받을 수 있음
=> 클래스로 정의된 객체만을 전달
=> 제네릭을 통한 유연한 프로그래밍을 기본 자료형에도 적용할 수 있기 위해 Wrapper Class를 사용
기본 자료형의 값을 문자로 변환
wrapper 클래스를 이용하면 기본 자료형의 값을 문자열로 변환 가능
Integer i = 12;
String str;
str = i.toString(); // 12라는 숫자를 문자열 "12"로 반환
int primaryInt = Integer.parseInt(str); // Integer클래스 안에 있는 문자열 변환 함수를 사용해 문자열을 정수로 바꾸는 모습
boxing과 unboxing
- boxing: '박싱한다' -> 기본 자료형을 wrapper 클래스 객체로 박싱
- unboxing: '언박싱한다' -> wrapper 클래스 객체를 기본 자료형으로 언박싱
기본 자료형의 경우 -> wrapper 객체로 만들기 위해 박싱
wrapper 객체의 경우 -> 기본 자료형으로 만들기 위해 감싸진 것을 언박싱
int primaryInt = 20;
Integer wrapperInt1 = new Integer(12); // 12라는 기본 자료형을 박싱한 모습
Integer wrapperInt2 = Integer.valueOf(20); // 동일한 결과지만 이걸 더 선호
primaryInt = wrapperInt.intValue(); // Integer클래스 안에 있는 언박싱 함수를 호출 한 모습
대표적인 시스템 함수는 다음과 같음
- file://: Accessing local filesystem
- http://: Accessing HTTP(s) URLs
- ftp://: Accessing FTP(s) URLs
- php://: Accessing various I/O streams
- zlib://: Compression Streams
- data://: Data (RFC 2397)
- glob://: Find pathnames matching pattern
- phar://: PHP Archive
LFI 공격을 하면서 유용하게 사용할 수 있는 wrapper는 다음과 같음
- expect:// (system command 실행: www.[웹 사이트의 주소].index.php?page=expect://ls) ,
- php://filter/ (다양한 I/O스트림 다루는데 사용, 대표적으로 base64 encoding으로 문서 열람: www.[웹 사이트의 주소].index.php?page=php://filter/convert.base64-encode/resource=/etc/passwd)
- zip:// (zip파일의 압축을 푼 다음에 파일안에 있는 코드를 실행시켜 주는 기능: www.[웹 사이트의 주소].index.php?page=zip://file.zip#shell.php)
LFI 공격이란?
외부의 TXT, php 등 파일을 내부의 PHP 파일처럼 사용할 수 있으며, 서버 내부의 파일을 가져올 경우 정보 유출을 위해 많이 사용됨
PHP란?
C언어 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어
출처
참조 자료형이 무엇이고, 기본 자료형과 무슨 차이점이 있는가?
기본 자료형과 참조 자료형 중 String을 비교하기 전에 나는 참조자료형을 명확히 모르기 때문에.. 참조자료형을 우선 공부 한다.참조(Reference)의 의미일반명사적 의미 : (정보를 얻기위해)참고하
velog.io
래퍼(wrapper) 클래스에 대해...
자료형이란 데이터 타입(type)을 의미하며, 프로그래밍 언어에서는 여러 종류의 데이터를 식별하는 분류를 의미한다.자바에서 제공하는 자료형은 크게 2가지로 분류할 수 있다.1\. 기본 자료형2\.
velog.io
https://vanslog.io/posts/language/java/primitive-type-and-reference-type/
'워게임 스터디' 카테고리의 다른 글
[250408][Webhacking] old-25 (0) | 2025.04.08 |
---|---|
java 스크립트 정리 (1) | 2025.04.01 |
[250401][Webhacking] old-10 (0) | 2025.04.01 |
[250325][Webhacking] old-12 (0) | 2025.03.25 |
[250219] [dreamhack] ex-reg-ex (0) | 2025.02.19 |