AWD攻防赛之各类漏洞FIX方案

2019-08-0200:05:48 发表评论

AWD攻防赛之各类漏洞FIX方案

0×01 Introduction

1、CTF中的线下赛又被称为AWD(Attack With Defence)。AWD对于选手的攻击能力,防御能力以及团队合作能力都有着很高的考验。比赛中有多支队伍,每个队伍维护多台服务器,服务器中存在多个漏洞,利用漏洞攻击其他队伍的服务器可以进行得分,修补漏洞可以避免被其他队伍攻击失分。

2、WEB安全中常见漏洞包括SQL注入、反序列化、文件上传、文件包含、代码执行、XXE、XXS、CSRF等。大家熟知的AWD攻防赛中常常是把某几个漏洞点结合起来进行考察。在AWD赛制中,攻与防是相对的,针对服务器上不同漏洞所采用的修补方案也不一样。

3、在这里我会将自己的经验分享给大家 —- 即将退役的CTF选手。

0×02 Sql Injection

1、常见的SQL注入漏洞主要是由于程序开发过程中不注意规范书写Sql语句以及对特殊字符的不严格过滤,从而导致客户端可以通过全局变量POST和GET提交恶意代码。

2、Fix:基于黑名单、转义、报错

黑名单

SQL Filter

$filter = "regexp|from|count|procedure|and|ascii|substr|substring|left|right|union|if|case|pow|exp|order|sleep|benchmark|into|load|outfile|dumpfile|load_file|join|show|select|update|set|concat|delete|alter|insert|create|union|or|drop|not|for|join|is|between|group_concat|like|where|user|ascii|greatest|mid|substr|left|right|char|hex|ord|case|limit|conv|table|mysql_history|flag|count|rpad|\&|\*|\.|-";

if((preg_match("/".$filter."/is",$username)== 1) || (preg_match("/".$filter."/is",$password)== 1)){
    die();
}

转义

php.ini

magic_quotes_gpc=on     #php5.4的更高版本中,这个选项被去掉了。

magic_quotes_gpc 函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”{单引号(’)、双引号(”)与 NULL(NULL 字符)等字符都会被加上反斜线。},以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。

addslashes() 函数

addslashes(string) 

addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
预定义字符是:单引号(')双引号(")反斜杠(\)NULL

PS:PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默认是 on, 实际上所有的 GET、POST 和 COOKIE 数据都用被 addslashes() 了。 不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。 遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

报错

控制错误信息

php代码开头添加语句:error_reporting(0);

发表评论

请登陆后发表评论