01.
function
write(
$sid
,
$sess_data
){
02.
global
$sess_save_path
,
$sess_data_md5
,
$sess_save_name
;
03.
$sess_file
=
$sess_save_path
.
'/mvm_sess_'
.
$sid
;
04.
if
(
$sess_data
==
""
){
05.
mvm_session::debug(
'不需写入'
,
__line__
);
06.
return
true;
07.
}
08.
if
(md5(
$sess_data
) ==
$sess_data_md5
){
09.
mvm_session::debug(
'不需更新,数据没发生变化'
,
__line__
);
10.
return
touch(
$sess_file
);
11.
}
12.
else
{
13.
mvm_session::debug(
'写入的文件地址:'
.
$sess_file
,
__line__
);
14.
$sess_file_handle
=
fopen
(
$sess_file
,
'w'
);
15.
if
(
$sess_file_handle
){
16.
return
fwrite(
$sess_file_handle
,
$sess_data
);
17.
fclose(
$sess_file_handle
);
18.
}
19.
else
20.
{
21.
return
false;
22.
}
23.
}
24.
}
25.
只要我们控制了
$sid
和
$sess_data
的话。那么SHELL就能写进去了。
26.
27.
再看。header.php文件的 94行开始:
28.
if
(
$style_id
){
29.
unset(
$_SESSION
[
'mvm_style_id'
]);
30.
$_SESSION
[
'mvm_style_id'
] =
$style_id
;
31.
}
elseif
(
$_SESSION
[
'mvm_style_id'
]){
32.
$style_id
=
$_SESSION
[
'mvm_style_id'
];
33.
}
else
{
34.
$style_id
=
$mm_default_style
;
35.
}