靶场科普 | SQL注入之编码注入发表时间:2022-08-01 11:24 本文由“东塔网络安全学院”总结归纳 靶场介绍: SQL注入之编码注入 今天,给大家介绍一下“东塔攻防世界”其中的一个靶场:“SQL注入之编码注入”。 一、实验介绍 1.SQL注入 SQL注入是网站存在最多也是最简单的漏洞,主要原因是程序员在开发用户和数据库交互的系统时没有对用户输入的字符串进行过滤,转义,限制或处理不严谨,导致用户可以通过输入精心构造的字符串去非法获取到数据库中的数据。 2.编码注入 程序在进行一些操作之前,经常会进行一些编码处理,而做编码的函数也是存在问题的,通过输入转码函数不兼容的特殊字符,可以导致输出的字符变成有害的数据。常见的编码注入有mysql 宽字节以及urldecode/rawurldecode 函数导致的。 ![]() 1) 宽字节注入 此编码设计也存在漏洞,建议使用官方给的mysql_set_charset方式来设置编码,在调用SET NAMES 之后还记录了当前的编码,留着给后边mysql_real_escape_string处理字符时使用,后边合理的使用mysql_real_escape_string还是可以防御此漏洞的。 2) 二次urldecode 注入 现在通常Web应用程序大多都会进行参数过滤,来防止注入。如果某处使用了urldecode或者 rawurldecode 函数,则会导致二次解码生成单引号二引发注入,即二次注入。 二、实验目的 1.掌握sql注入的原理以及利用过程 2.掌握编码的原理以及注入的方式 三、实验步骤 按照解题思路进行实践 四、防御方法 1.在执行查询之前先执行SET NAMES ‘gbk’,character_set_client=binary 设置character_set_client 为 binary 2.使用mysql_set_charset(‘gbk’) 设置编码,然后使用mysql_real_escape_string() 函数被参数过滤 3.使用pdo方式,在Php 5.3.6及以下版本中需要设置setAttribute(PDO:ATTR_EMULATE_PREPARES,false); 来禁用preparcd statements 的仿真效果。 4.Web应用程序通常使用addslashes() 、mysql_real_escape_string()、mysql_escape_string()函数或者开启GPC来防止注入,也就是给单引号(‘’)、双引号(“”)、反斜杠(\)和NULL加上反斜杠转义。
文章分类:
靶场介绍
|