代码审计 Flashcards
magic_quotes_runtime干什么用的
魔术引号
自动在’,”,\,NULL前面加反斜杠\
文件上传漏洞,有一个文件test.jpg,里面代码是木马代码,我把后缀名改成jpg了,我想让它执行里面的代码,怎么做
当访问www.xx.com/phpinfo.jpg/1.php这个URL时,会将phpinfo.jpg作为PHP文件来解析(1.php是不存在的文件)
文件上传漏洞中,如果网站把asp用黑名单过滤掉了,还可以用什么后缀代替(如hello.asp)
大小写:hello.aSp
hello. asa
hello. cer
hello. cdx
php中popen()是什么漏洞
命令执行漏洞
>D:/2.txt’,’r’);?>
第一个参数是命令
第二个参数是指针文件的连接模式,有r和w代表读和写
phpinfo()’;
preg_replace(“/(.*?)$regexp”, ‘\1’, $var);
?>
能看出什么漏洞
代码执行漏洞preg_replace()
文件上传漏洞中,apache的conf里面有这样一个配置
AddType application/x-httpd-php .jpg
是什么意思
即使扩展名是jpg,一样能以php方式执行
请说明php中的md5比较漏洞是什么意思
PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么php将会认为他们相同,都是0。
所以php中md5(QNKCDZO)==md5(240610708)这个说法是正确的
php中file_put_contents()表示什么漏洞
本地文件写入漏洞
能看出什么漏洞
array_map()代码执行漏洞
我们提交 http://127.0.0.1/array_map.php?callback=phpinfo 即执行phpinfo()。
文件上传漏洞中,如果是服务端校验不允许上传php格式,怎样通过抓包的方法绕过
上传1.php,用burp抓包,将content-type字段改为image /gif或者image /jpeg
php中::是什么作用
在PHP中“::”这个叫范围解析操作符,又名域运算符
“::”符号可以认为是与C语言中的“.”相似的,而它更像C++中(Perl)的::类范围操作符。
php调用类的内部静态成员,或者是类之间调用就要用::
下面是一个例子: class A { static $count = 0; static function haha() { // } function diaoyoug() { self::haha(); self::$count; } }
a.b.c; /* C语言中的 */
a::b::c(); // C++ 中的函数
$a::b::c; # Perl 5中的标量
php中strcmp有什么特点
返回0的意思是相等。
- 2 中是将两个参数先转换成string类型。
- 3.3以后,当比较数组和字符串的时候,返回是0。
- 5 中如果参数不是string类型,直接return了
php中,parse_str()的作用是什么,会有什么漏洞
作用是:解析字符串并注册成变量,会直接覆盖已有变量
变量$b原有的值1被覆盖为了2
php中in_array()有什么特点?
函数作用:用来判断一个值是否在某个数组列表里
$array=[0,1,2,’3’];
var_dump(in_array(‘abc’, $array)); //true
var_dump(in_array(‘1bc’, $array)); //true
可以看到上面的情况返回的都是true,因为’abc’会转换为0,’1bc’转换为1。
在所有php认为是int的地方输入string,都会被强制转换
php中,register_globals=on时,表示什么
变量来源可能是各种不同的地方,都可以覆盖
php中双引号的但引号表示字符串有区别吗
双引号会解析中间的变量,如:
$a = ‘hello’
$b=”$a”,则b=‘hello’
但$b=’$a’,则b=’$a’
${ } 有什么漏洞
它将执行花括号间的代码,并将结果替换回去
if (ini_get(‘register_globals’))
foreach($_REQUEST as $k=>$v)
unset($($k));
变量$a没有初始化,在register_globals=on时,控制$a出错
http://www.abc.com/test1.php?a=1$b=2
显示$a未定义,这时该怎么办
http://www.abc.com/test1.php?GLOBALS[a]=1$b=2则覆盖成功
php中switch()有什么特点
如果switch是数字类型的case的判断时,switch会将其中的参数转换为int类型。如下:
这个时候程序输出的是i is less than 3 but not negative,是由于switch()函数将$i进行了类型转换,转换结果为2。
allow_url_include干什么用的
在该配置为 on 的情况下,它可以直接包含远程文件,当存在 include ($var) 且 $var 可控的情况下,可以直接控制 $var 变量来执行 PHP 代码。
allow_url_include 在 PHP 5.2.0 后默认设置为 off,配置范围是 PHP_INI_ALL。
与之类似的配置有 allow_url_fopen,配置是否允许打开远程文件,不过该参数对安全的影响没有 allow_url_include 大
配置 allow_url_include 为 on,可以直接包含远程文件。测试代码如下:
想查看php的配置文件,应该搜索什么关键字的文件名
config
php中,import_request_variables()的作用是什么,会有什么漏洞
作用:把GET,POST,COOKIE的参数注册成变量
此时访问网址:http://test.com/1.php?b=2,则$b的值1被覆盖成了2
php审计中,关于配置,我们需要注意哪几个配置,说出10个
SET NAMES 如果是gbk,则存在宽字节漏洞 register_globals 全局注册开关 allow_url_include 是否包含远程文件 magic_quotes_gpc 魔术引号 magic_quotes_runtime 魔术引号(针对文件和数据库) safe_mode 安全模式 open_basedir 限制php可访问目录 disable_functions 禁用函数 display_errors display_errors 和 error_reporting 错误显示
open_basedir是干什么用的
用来现实php只能访问哪些目录