Plit00's Story

PHP - Unserialize() 본문

잡동사니/webhacking

PHP - Unserialize()

plit00 2019. 8. 16. 04:14

PHP serialize () 임의의 출력을 생성 없습니다. 

예를 들어 직렬화 문자열에 동일한 배열 키를 정의 없습니다

 

 

 

Unexpected Behavior

 

Segmentation fault

가장 명백한 이벤트는 프로세스의 반환 코드를 확인하여 쉽게 감지 수있는 분할 오류입니다.

PHP prints zend_mm_heap_corrupted:

PHP 할당을 위해 자체 메모리 관리자를 사용합니다. 할당자가 힙에서 손상을 감지하면 해당 메시지가 인쇄됩니다.

 

 

값의 유형은 zval 구조 안에 저장되며 0 10 사이의 숫자가 있습니다.

=>유형 1 정수를 나타내고 유형 6 문자열에 사용됩니다. var_dump 인쇄 변수가 수없는 유형 (0-10 범위가 아님) 있으면 "& UNKNOWN;"문자열이 대신 인쇄됩니다.

PHP 알지 못하는 데이터 유형을 만드는 것이 일반적으로 불가능하기 때문에 메모리 손상을 나타냅니다.

 

 

PHP 5.6에서는 zval 구조체의 크기가 24 바이트입니다.

구조체가 \ x01 완전히 채워지면 결과 값은 72340172838076673 값을 갖는 정수가됩니다.

 \x01 구성된 24 바이트 길이의 문자열을 놓습니다. 결과적으로 직렬화 데이터에 72340172838076673 있으면 사용 비어있는 취약성이 발견되어 성공적으로 악용되었다는 것을 나타냅니다.

 

Incorrect return value:

배열을 항상 외부 요소로 사용하여 unserialize 가지 가능한 반환 데이터 유형 , 오류가 발생하지 않은 경우 "array"또는 입력이 unserialize 만족하지 못하는 경우 "NULL" 나타냅니다.

배열과 다른 모든 데이터 유형 또는 null 예상치 못한 일이 발생했음을 의미합니다.

post-unserialize allocation : 

unserializing var_dump 사이에 정의 변수의 발생은 자유 사용 (out-of-free) 취약점의 표시 가능성이 큽니다.

 

unserialize unserialize var_dump : 

번째 unserialize 추가되었습니다. 초기 unserialize 메모리 작업의 양을 늘리는 것이 목적입니다.

alloc_serialize alloc var_dump : 

문자열은 직렬화되지 않고 일부 수정 값은 변수에 할당되고 마지막으로 unserialize 결과가 출력됩니다.

 

두 버그는 Stackoverflow로 이어지고 segmentation 오류를 일으켜 렬화되지 않은 유형입니다.

'잡동사니 > webhacking' 카테고리의 다른 글

매커니즘  (0) 2022.01.27
unserialized  (0) 2021.12.09
Prepare() : WordPress Exploit  (0) 2019.08.15
Comments