过狗菜刀原理以及绕过魔术引号的配置

本文作者:i春秋签约作家——凉风

首先感谢@我是salf给我的灵感

我之前发了一个帖子:过了D盾扫描的一句话木马。

里面分析了一句话木马的原理,以及过狗、D盾的木马的编写。

传送门:

https://bbs.ichunqiu.com/thread-25644-1-1.html

tips:下文需要知道一句话木马的原理,可看上面说的帖子

tips2:还是在这里简单的说一下吧,例如木马 assert($_POST[XYZ]),会把用户post的 XYZ=asdfasdf中的asdfasdf作为php代码执行,这是assert这个函数的特性,eval同理。

也许有人用了我的马儿还是被狗拦了,是因为你们的刀子不是过狗刀。

菜刀的官网在去年更新了最新的刀子,可以过狗的刀子。(附件)

为什么能过狗?原理是什么?
之前我们分析了一句话木马的原理,今天我们就来分析一下菜刀的工作原理以及过狗原理吧。

新版菜刀多了一个叫做caidao.conf的配置文件,自带过狗配置,看图

红框中的配置就是这次文章的重点,也是过狗的重点所在(只讨论php)

单单看配置可能看不明白,我们用fidder抓包看看,拿过狗菜刀和旧版菜刀做一个对比

看看究竟有什么区别,为何能过狗。

旧版菜刀:

旧版post了两个参数,但是被安全狗拦截。

新版菜刀:

post了一个参数,绕过了安全狗,并且返回了正常的数据

我们来对比一下post的数据

好长,可以看到有大部分都是base64编码,我们通过仔细观察,或者是拿去解密,就能知道这是菜刀需要执行的命令。

为了方便看,我做个简单的处理,去掉命令,把里面的url编码还原成字符

可以看出

旧版几乎没有经过处理,语句的作用是:执行经过base64解密后的命令(这里看不懂的一定要看的之前发的帖子,或者文章开头的tips)

新版和旧版语句的最终的作用是一样的,也是执行经过base64解密后的命令,但是新版做了过狗处理,安全狗已经不认识这段代码了(不懂叫什么就叫代码吧。。)

(新版的语句一堆反斜杠,是转义,因为代码用了双引号嵌套,双引号里的双引号需要进行转义不然语法错误,大家自行忽略转义符就能看明白了)

我们看看能不能自己写一个过狗的配置,学以致用嘛。

大家如果是像我一样的菜比的话,就先备份好配置文件,以防不备

打开配置文件,看看配置文件正确改法的格式要求、注意事项什么的。

看图:

现在我们能看明白:红框中的是我们post的数据中,“密码”= xxxxx中 的 xxxxx

而xxxxx就是服务器一句话木马执行的代码

可以看到,菜刀执行命令(圆圈中的%s)用到的函数是菜刀自己构造的assert与eval变形木马,(即红框中代码)为方便理解,这个菜刀自己构造的木马可以称之为“木马函数”,我们传到服务器的一句话木马在这里只是用来执行菜刀传递的这一个“木马函数”,而菜刀传递的其他关键的命令(圆圈中的%s),都由这个“木马函数”来执行。就像是:老板命令经理,经理命令员工
—> 老板通过经理来命令员工。

这么设计是有道理的:

1.
没有人知道一句话木马的形式是怎么样的,变形的一句话木马有好多种,除了assert和eval以外仍有其他函数可以成为一句话木马,有些不能支持多语句执行,使用“木马函数”这个方法大大增加了兼容性,因为服务器的一句话木马只需要执行这个“木马函数”就可以了。

2. 这样子,可以在用户操作菜刀时,所有命令集合在一起给“木马函数”一起执行,不用频繁的向服务器进行多次请求,一个命令一个命令的执行会很慢滴。(请求过于频繁会不会被封ip?)

(好了红字终于结束了,感觉红色好难看,但是表重点还好吧。)

图中红框就是我们需要修改,替换的地方,我们换成自己的配置。经过分析fidder拦截的数据包,我们要执行的命令是base64编码的命令,这个加密的命令就是作为“木马函数”的参数,在配置文件里用%s表示,我们试着改改,先试着修改成较为简单的,易于理解的又能过狗的配置。

看图:

很短的一句话,直接  (看图,这里被和谐) 就可以过狗,%s就是菜刀传进去的base64加密命令。

至于菜刀的命令为什么是base64加密,更高级的玩法,本文暂时不讨论,大家可以看自带的readme.txt

本文就这么结束么?这怎么对得起我的标题!我可不是标题党!(才怪)(其实对标题起名不是很满意)

注意,其实以下才是本文的重点,本菜比摸爬滚打走了许多弯路才研究出来的,连菜刀原作者都不曾想到的问题(我脸皮厚hhh)

看了过狗菜刀原本的配置,当我看到了一堆反斜杠,我就想到了gpc魔术引号,如果开启了,那么这个菜刀岂不是废了???

经过测试,新版菜刀废了。。。好吧,果然跟我想的一样。

在这里感谢秦国的 青鸟  @我是salf  他给我灵感,我才想到要弄一个过gpc的配置,不然这篇文章就结束了(本菜比也不会走那么多弯路,不会废了一整天头痛这个。。这篇文章至少提前2天出来)(我终究还是太菜了)

想绕过gpc,那就不能有引号了,旧版菜刀没有用引号(估计是想到有gpc)。

我们不仅要考虑到引号的问题,还要考虑安全狗,这对本菜比来说难度还是好大的。

既然我菜,为什么我要做这个??

因为我查过 ,过狗菜刀绕gpc配置,也许是打开的方式不对,没有查到资料,网上没有哇

既然这样我就能拿来装逼了hhh(。。。)

(不要告诉我网上有,我会很失望的,)

不知不觉又尬聊了,

本php菜比的弯路总结:

1.eval函数可以执行 echo 、if 等,分号结尾必不可少。

2.assert函数内不能有echo,不能有if,

3.安全狗拦截机制:eval后不能跟$_POST,也不能加base64_decode,assert相比eval拦截的要松,

4.assert(0|| xxx) 这个代码||后面的会被执行,换成&&后,符号两边都会执行,就是逻辑运算符,不多介绍。

5.assert可以接着base64解密,然后执行解密后的命令

6.base64_decode()括号里如果是字符串常量必须带引号,括号内可以放不带引号的变量

配置文件开头提到了分隔符,我们看看分隔符

右边的图是菜刀接收的原本的数据,用的是配置文件中设置的分隔符来隔开,如果有很多命令的话会更直观。菜刀处理了这个不友好的回显数据,将数据转换成我们看到的友好界面。

base64解密我们菜刀的加密部分的命令(%s的地方),可以看到  分隔符是用 echo(”")这样的形式输出的,所以不能用assert了,我们选用eval执行菜刀的命令,可是eval会被拦截。。

思路:前面总结5说了assert可以执行base64解密的内容,我们就把eval命令加密,用decode解密后再给assert执行。base64_decode通过$_post[]赋值,加密后的eval也通过post变量赋值

如图:

这样我们需要改的配置就写好了,赶快试试看。。

成功了成功了,感觉这样表达有点蠢,但是意思就是成功了,累坏我了,好激动

我这个php菜比走了那么多弯路终于弄出了有用的东西。

为了过gpc想了很多条思路,但是那些路都因为各种各样的报错断了,本菜比不知道什么原因,就不贴出来误导大家了。

ps:刚刚发帖被拦截了,好在我备份了,不过要重新放图。。

ps:我得意的太早了,拦截x3

ps:听丞相的话,换成全角就ok了,谢谢丞相大人

大家多交流吧~不懂可以问我哦

附上原版过狗刀,刚出的时候拿到的。后缀是7z,因为不给上传我就改成rar

密码是我拿到的时候就自带的 密码:www.maicaidao.com

时间: 2024-10-18 09:43:34

过狗菜刀原理以及绕过魔术引号的配置的相关文章

char函数绕过魔术方法注入

我目前学习到的绕过魔术引号的几种方法(如果知道还有别的请万望告之): 1.倘若服务端是GBK可以尝试宽字节注入 2.使用char函数绕过魔术引号进行注入 3.同char函数类似的函数,例如bin(转换为2进制),或者oct(转换为8进制) 本篇就是介绍char函数来进行绕过魔术引号来注入. 假设:select * from user where username = 'def'; 是可以等价于:select * from user where username = char(100,101,10

中国菜刀原理

用了菜刀用了也有一段时间了,感觉挺神奇了,这里做一个小小的探究吧,起始也就是用鲨鱼抓包看看软件是怎么通信实现的,不敢卖弄知识,权当学习笔记了,大神路过呵呵 这货就是主界面,环境啥的就随意了,IIS,阿帕奇,阿金科斯都可以,我这里用apache,因为之前搞的是PHP开发,对PHP相对比较熟悉,随机就用PHP的一句话来做实验了,Asp和jsp的原理应该都差不多. 服务端的.php是这样: <?php eval($_POST['op']); ?> 客户端连接设置好URL,密码,连接好之后.我们开始实

编写不受魔术引号影响的php应用

原创作品author流水孟春,转载请注明出处lib.cublog.cn 阅读前提:你必须看过php手册上的"第IV部分安全"的"第10章魔术引号".如果没看过,也没问题,现在马上花10分钟先看一下php手册上的这东西. 魔术引号(Magic Quote)是一个自动将进入 PHP 脚本的数据进行转义的过程 你可能想让你的程序兼容多个数据库,但你使用的不同的数据库可能使用不同的转义符,而我们的程序又有可能运行在不同的php.ini配置的主机上,关于magic_quote

PHP 魔术引号

1.魔术引号的作用是什么? ? 魔术引号设计的初衷是为了让从数据库或文件中读取数据和从请求中接收参数时,对单引号.双引号.反斜线.NULL加上一个一个反斜线进行转义,这个的作用跟addslashes()的作用完全相同. 2.转义的作用? ? 正确地接收和读取数据,从而正确地执行SQL语句.比如从前台接收一个参数,假定为$para,后台接收到参数后要执行一条查询的SQL语句,拼接sql语句时,把参数传进入,类似于 "SELECT * FROMTABLEWHEREFIELD1= $para ANDF

2015最新专版过狗菜刀,过目前最新版V4.2安全狗!

最新专版过狗菜刀,过目前最新版V4.2安全狗! 1.支持过服务器安全狗V4.1.08893 2.支持过网站安全狗V3.3.09060 3.增加提权特殊命令功能 百度网盘:http://pan.baidu.com/s/1gdtiTTh 51CTO下载:http://down.51cto.com/data/2037909 (如有失效请上官网:www.cncaidao.net提交建议) ----------------------------------------------------------

过狗菜刀?过安全狗中国菜刀。

最新专版过狗菜刀,过目前最新版V4.2安全狗! 1.支持过服务器安全狗V4.1.08893 2.支持过网站安全狗V3.3.09060 3.增加提权特殊命令功能 百度网盘:http://pan.baidu.com/s/1gdtiTTh 51CTO下载:http://down.51cto.com/data/2037909 (如有失效请上官网:www.cncaidao.net提交建议) ----------------------------------------------------------

2016过狗菜刀下载 2016过狗刀 过狗菜刀下载

2016过狗菜刀 2016过狗刀公布 <ignore_js_op> <ignore_js_op> 过狗菜刀2016.rar (2.64 MB, 下载次数: 3)

php之魔术引号

什么是魔术引号?当sql句中含有单引号,双引号,反斜杠和NUL时,这时候如果不对这些符号进行转义,写入数据库时就会出错,而魔术引号magic_quotes_gpc()就是对这些符号进行转义以便能把数据正确写入数据库. get_magic_quotes_gpc()获取当前magic_quotes_gpc配置选项设置,如果magic_quotes_gpc处于on,则返回1,magic_quotes_gpc处于off,则返回0,在PHP5.4.0起将始终返回false. magic_quotes_gp

一、掌握Samba服务的配置原理;二、在linux下配置samba共享服务

一.掌握Samba服务的配置原理二.在linux下配置samba共享服务(匿名共享.身份验证.账户映射.访问控制)Samba介绍:Samba是运行在Linux与Unix之上的免费共享服务的软件,是典型服务器/客户端模式,它有两个进程,一个是smbd,主要是用来管理共享文件的进程,另一个是nmbd,用来实现主机名到IP地址的转换(相当于Windows下的NetBIOS的功能),smbd运行在TCP的139.445端口,nmbd则运行在UDP的137.138端口(运行samba服务后可以用如:net