这篇文章给大家介绍php中为什么提交的命令大于11个字符就报错,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在地气文章末尾留下了送给大家的彩蛋(认真读文章的我肯定不会中标~)。
下边就和大家分享一下彩蛋的蛋是怎么玩儿的。在地气哥Payload工具中,key的值被复制了多次,为的是当我们输入Payload语句被程序进行serialize之后,将每一位都进免费云主机域名行ASCII码后的异或运算,来逆推出加密的Base64代码,我们可以从第25-28行的语句中看到逆推过程,是因为从substr中来逐步ASCII码。我们看一下当substr函数返回空时,情况是怎么样的。我们看到,当substr截取不到任何东西时,PHP返回“空”,但是在进行ord强制转换后,返回的是实打实的0,因为地气哥中的key是写死的,当我们生成的Payload比较多的时候,就会出现0去异或程序中生成的第一次加密Payload某一位的情况,这显然是不合理的。
解决该问题最有效的方法应该就是让程序动态的去复制粘贴Key,这样可以达到长度无限的情况。
这里笔者粘贴出已修改的脚本:测试效果:成功解决了Payload长度问题。
既然解决了Payload长度问题,那么如果我们可以将该马儿更加方便的使用,那该多好啊。
笔者想到的是,如果可以使用蚁剑去连接,那岂不是舒服的很。毕竟该国外马儿加密的流量非常强悍的。
当然我们要想要与蚁剑进行交互,我们首先要解决一个问题,该问题是马儿中的unserialize函数。Unserialize函数是用来反序列化的,但是他方便了PHP的同时却不太适合蚁剑,因为蚁剑是基于nodeJs而开发,同时遵循了Js的语法规则,我们知道在Js中定义数组必须为索引下标,在PHP中定义数组下标可以是字符串类型,这牵扯到了该马儿的核心:第48行的$vv[‘ak’]。如果我们使用unserialize函数,可能不太方便Js与PHP的交互。在一个正常的WEB应用中,前台(Js)与后台(PHP/JAVA等)语言中,Json为主要的传输数据的格式,这里笔者将unserialize函数改为json_decode。如图:这样起来我们就可以在nodeJs与PHP之间搭建一个沟通的桥梁。新马儿代码:
下边笔者就编写了一个蚁剑的编码器,他用于链接该木马。
编码器代码:当然,该编码器的第15行的ak值,需要与马儿中的key所对应。演示:(马儿密码任意即可)
该马儿流量是很强悍了,但是脚本本身并不免杀。
我们看一下马儿被D盾吊锤:怎么办呢?绕啊,这么好的马子,编码器都完成了,不能前功尽弃!看到提示eval后门,参数$vv那边有问题,我们看一下:很简单,使用NULL拼接大法(虽然一些普遍的马儿都已经过不了了)。现在不报eval的错误了,有戏!可以看到爆出$GLOBALS的错误,我们直接转移到第6行看一下。该代码对整个马儿不太影响,直接删掉!我们在看一下结果:ByPass!
通过地气哥的一些分析,从其中得到一些灵感,NULL拼接不再孤独,再次奔放~!
之前一直疏忽一个问题,$GLOBALS到底里面存放一些什么东西,今天,我们var_dump一下看看。可以看到$_GET/$_POST/$_COOKIE都存放在这些东西里面。这个时候笔者想到了eval/**/()格式,以及一些变量值的混淆,写出第二个简约一句话木马。Phpinfo:D盾测试:关于php中为什么提交的命令大于11个字符就报错就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
信很多人升级最新的msf后找不到自己曾经熟悉的msfpayload了(所以说喜欢收集shellcode是一件好事),没错我特么的也找不到了。其实可以use到自己要使用的payload,然后制作。但是也有人喜欢直接在终端里生产自己的shellcode。另外我想也…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。