워게임 스터디

[250408] wrapper

jisu0924 2025. 4. 8. 15:03

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언어 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어

 

출처

https://velog.io/@nknkcho/%EC%B0%B8%EC%A1%B0-%EC%9E%90%EB%A3%8C%ED%98%95%EC%9D%B4-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EA%B8%B0%EB%B3%B8-%EC%9E%90%EB%A3%8C%ED%98%95%EA%B3%BC-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%B4-%EC%9E%88%EB%8A%94%EA%B0%80

 

참조 자료형이 무엇이고, 기본 자료형과 무슨 차이점이 있는가?

기본 자료형과 참조 자료형 중 String을 비교하기 전에 나는 참조자료형을 명확히 모르기 때문에.. 참조자료형을 우선 공부 한다.참조(Reference)의 의미일반명사적 의미 : (정보를 얻기위해)참고하

velog.io

https://velog.io/@ksh9409255/%EB%9E%98%ED%8D%BCwrapper-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%97%90-%EB%8C%80%ED%95%B4...%EC%9E%91%EC%84%B1%EC%A4%91

 

래퍼(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