eval执行

点击此处获得更好的阅读体验


WriteUp来源

本WP来自adminx原创投稿

题目考点

  • RCE

  • eval函数

解题思路

启动环境

1
2
3
4
5
6
7
<?php
if (isset($_REQUEST['cmd'])) {
eval($_REQUEST["cmd"]);
} else {
highlight_file(__FILE__);
}
?>

根据 PHP Manual 中 eval 的说明,得知 eval()函数是可以把一串字符串作为PHP代码执行,范例如下:

1
2
3
4
5
6
7
8
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>

以上例程会输出:

1
2
This is a $string with my $name in it.
This is a cup with my coffee in it.

尝试在URL中带上名为cmd的参数:(此处system()函数的作用为执行系统命令并输出执行结果)

执行成功 此处需要注意参数结尾一定不能省略;,满足PHP语法才可以执行成功。

接着往下尝试

发现 Flag 文件

直接 cat文件内容,即可 GET FLAG