说实话,回到家复习的效率真的很低很低,周末过了,差不多继续读书了。权当回家看看父母,不过也好,晚上完成了从小到大一直想做的一件事。以前看过一则帮妈妈洗脚的公益广告,也听说过有类似这样的家庭作业,不过乡镇的孩子估计没有这个家庭作业,我觉得现在也不会有。呵呵,育人和教书的概念差很多。言传身教,希望我的弟弟长大做的会比我好,,更希望影响的不止是我弟弟。
昨天在对一个网站进行渗透测试的时候,发现了一个大马,想对一个php大马进行改装收集回来用,发现了这个木马被加密。查看源代码是基于base64加gzinflate加密的。
既然如此,那么我就尝试着echo出;看看他的源码,顺便看看有没有后门。
可是,发现!输出后是
肯定不可能是php的短标签..
于是我后退一层
echo base64_decode
发现是这样的
所以肯定多层加密。这个是浏览器的编码原因所导致。
那么到底是发生在base6_decode这个函数还是还是在gzinflate这个函数?
百度了一下,gzinflate发现它是编码解压函数,于是我就写了一个算法,用base4解密函数对这段加密的字符串进行多次解密。再用gzinflate解压编码。
首先我们将先解密一次(将level设置为1),将它输出到一个文本里面
Code:
打开文档,发现是这样子地~~~
看到还有加密,就继续解密咯。
我们将level值设置高一点,200试试。
然后加个if语句用strpos函数判断是否还会出现”eval(gzinflate(base64_decode if”这段字符,根据strpos的特性,如果存在就返回查询字符串在目标字符串的位置,没有的话就返回false。
直到没有就return之!!
给出的code如下:
成功解出:
后来朋友告诉我独自等待的博客有:
http://www.waitalone.cn/eval-gzinflate-base64_decode-decryption.html
我就呵呵,欺负人呢。而且人家还有两种思路,第二种code如下:
给出的建议是将他代码中的strstr()函数换成strpos。没了。