一、环境
Win2003
phpstudy:php 5.2.17
二、相关知识
2.1 魔术引号 magic_quotes_gpc
magic_quotes_gpc = On:
功能:单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符
都会被加上反斜线,可预防SQL注入
2.2 safe_mode
safe_mode = On:
当一个web服务器上运行的php打开了安全模式,
那么一些函数将被完全的禁止,并且会限制一些可用的功能。
受限函数:
chdir, move_uploaded_file, chgrp, parse_ini_file,
chown, rmdir, copy, rename, fopen, require,link,
highlight_file, show_source, include, symlink, touch, mkdir, unlink
以及webshell一句话木马常用函数:
exec,shell_exec,passthru,system,popen
2.3 disable_functions =
disable_functions =
自定义禁用函数!
方便web管理,比safe_mode更具灵活性!
所以一般web服务器不会开启safe_mode功能,而是设置disable_functions!
2.4 open_basedir
;open_basedir =
(默认是没有开启!去掉分号表示开启该功能!)
功能:可将用户访问文件的活动范围限制在指定的区域,
通常是其家目录的路径,
也可用符号"."来代表当前目录。
三、具体内容
注:更改配置文件后需要重启服务!
3.1 magic_quotes_gpc
magic_quotes_gpc= Off
测试语句: ?id=1' and 1=1--+
magic_quotes_gpc= On
3.2 safe_mode
safe_mode = Off
一句话木马测试:
<?php
@eval($_POST['hack'])
?>
safe_mode = On
3.3 disable_functions
disable_functions =
不加任何函数限制!
用个大马试试!
disable_functions =fread,fopen,readdir
限制目录文件读写功能!
尴尬:突然发现这个大马是经过加密的,绕过了,检测不了!一时也没找到那种“明文”大马。。。
disable_functions =system
测试一句话:
<?php system($_REQUEST['hei']);?>
3.4 open_basedir
open_basedir =
默认情况下是可以访问多个磁盘内容的!
open_basedir =C:\phpstudy\WWW\
--------------------------------------------内容结束------------------------------------------------
注:类似disable_functions这种限制是可以绕过的!
蚁剑也有专门针对这个功能的插件:
测试了下,有时候有些函数与版本还有关系,会出现蚁剑或大马在这个php版本可以正常执行,而在另一个版本又执行不了!
php7也有bypass-(disable_functions)的:https://github.com/mm0r1/exploits/tree/master/php7-gc-bypass