7JZDl8.png

产生漏洞的两点,可控变量特定函数

7JnPJI.png

bGmbrV.png

函数集文件->配置文件->过滤文件->index文件

文件上传

<?php
move_uploaded_file($_FILES["file"]["tmp_ name"],$_FILES ["file"]["name"]);
?>
// move_uploaded_file 函数直接把上传的临时文件 copy 到了新文件。
$savefile = preg_replace ("/(php|phtml|php3|php4|jsp|exe|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\.1$)/i""\\1\\2", $savefile);

只要是能上传的地方,就都可能存在漏洞。常见的就两种,一个是格式没有限制,或者过滤不完善,导致各种任意文件上传。第二个就是文件名没有进行sql注入检测,很多程序员会忘记这一点,导致sql注入。因为文件名也是要存到数据库中的。

目录遍历/文件读取

如果程序员在开发中,直接将文件名或者文件路径在参数中传递,那么就可能导致攻击者利用../或者..\来进行跳转目录达到任意文件操作,比如任意文件读取。

另外,直接用文件名或者文件路径在参数中传递,还可能导致xss,因为,程序可能需要在页面中输出文件名字,这个时候,若文件名字也没有过滤,那么就会存在xss攻击。

登录认证

认证又是基于cookie和session,程序又经常会把用户账号等认证信息放到cookie中,来保持用户可以长时间登录,如果这段cookie没有进行加密,就会导致任意用户登录的漏洞

SQL注入

普通注入

关键字,比如 select from,mysql_connect,mysql_query,mysql_fetch_row 等,数据库的查询方式还有 update,insert,delete 只需要查找这些关键字

宽字节注入

使用addslashes()、mysql_real_escape_string()、mysql_escape_string函数或者开启GPC的方式来防止注入

但是如果某处使用了urldecode或者rawurldecode函数,如果开启了GPC来过滤,那么提交?id=1%25%27,%25经过url解码为%,%27解码为单引号,那么成功引发注入

results matching ""

    No results matching ""