Skip to content

Commit 60e2207

Browse files
author
Julien Pauli
committed
Merge branch 'PHP-5.6'
* PHP-5.6: 5.5.30 next More fixes for bug #70219 Conflicts: ext/pcre/php_pcre.c ext/session/session.c
2 parents 7cf8df5 + c07150c commit 60e2207

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
--TEST--
2+
Bug #70219 Use after free vulnerability in session deserializer
3+
--FILE--
4+
<?php
5+
ini_set('session.serialize_handler', 'php_serialize');
6+
session_start();
7+
8+
class obj implements Serializable {
9+
var $data;
10+
function serialize() {
11+
return serialize($this->data);
12+
}
13+
function unserialize($data) {
14+
session_decode($data);
15+
}
16+
}
17+
18+
$inner = 'r:2;';
19+
$exploit = 'a:2:{i:0;C:3:"obj":'.strlen($inner).':{'.$inner.'}i:1;C:3:"obj":'.strlen($inner).':{'.$inner.'}}';
20+
21+
$data = unserialize($exploit);
22+
23+
for ($i = 0; $i < 5; $i++) {
24+
$v[$i] = 'hi'.$i;
25+
}
26+
27+
var_dump($data);
28+
var_dump($_SESSION);
29+
?>
30+
--EXPECTF--
31+
array(2) {
32+
[0]=>
33+
&object(obj)#%d (1) {
34+
["data"]=>
35+
NULL
36+
}
37+
[1]=>
38+
object(obj)#%d (1) {
39+
["data"]=>
40+
NULL
41+
}
42+
}
43+
object(obj)#1 (1) {
44+
["data"]=>
45+
NULL
46+
}

0 commit comments

Comments
 (0)