이 기사에서는 PHP에 대한 관련 지식을 제공하며, 주로 역직렬화 문자 이스케이프에 대한 관련 문제를 소개합니다. PHP 직렬화 후 문자열이 대체되거나 수정되어 문자열 길이가 먼저 직렬화됩니다. 그런 다음 교체하고 수정하여 모두에게 도움이 되기를 바랍니다.
추천 학습: "PHP Video Tutorial"
Essence: Closed
카테고리: 더 많은 문자, 더 적은 문자
공통점:
<?php function filter($string){ $filter = '/p/i'; return preg_replace($filter,'WW',$string); } $username = 'purplet'; $age = "10"; $user = array($username,$age); var_dump(serialize($user)); echo "<pre class="brush:php;toolbar:false">"; $r = filter(serialize($user)); var_dump($r); var_dump(unserialize($r)); ?>
var_dump(serialize($user)); # 序列化 echo "<pre class="brush:php;toolbar:false">"; $r = filter(serialize($user)); # 替换后序列化 var_dump($r); var_dump(unserialize($r)); # 打印反序列化
10을 20으로 변경하려면 먼저 나중에 구성할 문자열:
原字符串:";i:1;s:2:"10";} 目标子串:";i:1;s:2:"20";}
따라서 , 입력:
결과 출력:
문자 감소
값 이스케이프
대상: 연령을 다음으로 변경 20
<?php function filter($string){ $filter = '/pp/i'; return preg_replace($filter,'W',$string); } $username = "ppurlet" $age = "10"; $user = array($username,$age); var_dump (serialize($user)); # 序列化 echo "<pre class="brush:php;toolbar:false">"; $r = filter(serialize($user)); # 替换后序列化 var_dump ($r); var_dump (unserialize($r)); # 打印反序列 ?>
username : 이스케이프를 구성하는 데 필요한 코드
age : 이스케이프 코드 구성
A 뒤에는 들어오는 age 문자열이 옵니다. 구성 길이
를 계산합니다. 이는 이 13자를 차지합니다. 2p가 1w로 변경될 때마다 1비트를 이스케이프하는 것과 같습니다. 13*2=26p를 입력하면 문자 길이는 26으로 표시되어 13w가 되고 다음 13자가 나머지 13비트를 차지합니다
payload:
username='pppppppppppppppppppppppppp' age=A";i:1;s:2:"20";}
요약
위 내용은 문자 이스케이프에 대한 PHP 역직렬화 상세 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!