国外租车网站模板,正规网站建设模板,网络公司举报找哪个部门,wordpress 产品网站SQL注入注入方式#xff08;大纲#xff09;
常规注入
通常没有任何过滤#xff0c;直接把参数存放到SQL语句中。
宽字节注入
GBK 编码 两个字节表示一个字符ASCII 编码 一个字节表示一个字符MYSQL默认字节集是GBK等宽字节字符集
原理#xff1a; 设置MySQL时错误配置…SQL注入注入方式大纲
常规注入
通常没有任何过滤直接把参数存放到SQL语句中。
宽字节注入
GBK 编码 两个字节表示一个字符ASCII 编码 一个字节表示一个字符MYSQL默认字节集是GBK等宽字节字符集
原理 设置MySQL时错误配置为set character_set_clientgbk 它将客户端字符集设置为 GBK 编码,这样会引发编码转化导致出现注入漏洞。
正常情况下GPC开启或使用addslashes函数过滤GET或POST提交的参数时攻击者使用的单引号**’就会被转义为 \。GPC开启或使用addslashes函数过滤在特殊符号前加入\**,从而达到安全的目的。但如果存在宽字节注入我们输入**%df%27时首先经过单引号转义成%df%5c%27**%5c为反斜杠\%df为GBK编码中的一个特殊字符表示为空格之后在数据库查询前使用了GBK多字节编码即在汉字编码范围内两个字节会被编码为一个汉字。然后MySQL服务器会对查询语句进行GBK编码即%df%5c转化成汉字連而单引号由于GBK为两个字节表示一个字符的原因保留下来从而造成注入漏洞。
若有一个网站其链接为http://123123/text.php?id1,并且其存在宽字节注入。
则构造http://123123/text.php?id1%df’or 11
当后端php代码像这样则导致参数宽字节注入。
mysql_query 是 PHP 中用于执行 MySQL 数据库查询的函数之一。该函数接受一个 SQL 查询作为参数并将其发送到 MySQL 数据库进行执行。在执行查询后mysql_query 会返回一个结果资源resource或者布尔值true 或 false具体取决于查询的类型和执行是否成功。mysql_query(SET NAMES gbk); //设置mysql连接字符集为gbk编码的语句。
$idisset($_REQUEST[id]) ? addslashes($_REQUEST[id]) :0; //判断是否存在并且使用/过滤特殊符号
$query SELECT first_name, last_name FROM users WHERE user_id $id;;同理SET NAMES gbk’可以理解为
set character_set_clientgbk;
set character_set_connerctiongbk;
set character_set_resultsgbk;在这个代码中addslashes函数将 ’ 前加了**\符号变成%df\**。
在进行GBK编码时将%df%5c看成一个宽字符得到連’造成注入。
二次编码注入
二次编码注入即二次urldecode注入是因为urldecode使用不当造成的。
在PHP中有以下常用的过滤函数
addslashes(),mysql_real_escape_string(),mysql_escape_string(),或者魔术引号GPC开关来防止注入。以上函数都是通过在特殊字符前添加反斜杠进行转义。
但这些函数在遇到urldecode()函数时都会因为二次解码引发注入。PHP在处理提交数据前就会进行一次url解码然后urldecode()函数又进行了一次解码。
例如构造id1%2527%25%解码一次后会变成1%27再进行解码变成id1‘单引号引起注入。
同理rawurldecode()也会造成同样问题。
若mysql_real_escape_string()在urldecode()之前则不会过滤urldecode()产生的单引号。
Base64编码注入
如果存在Base64_decode()函数并且没在后面有过滤直接拼接到SQL语句中则导致了SQL注入。
堆叠注入 原理mysql数据库sql语句的默认结束符是以;号结尾在执行多条sql语句时就要使用结束符隔 开,而堆叠注入其实就是通过结束符来执行多条sql语句。 触发条件 存在可以同时执行多条sql语句的函数比如mysql_multi_query()函数。未对****进行过滤。
漏洞类型 可显注入 攻击者可以直接在当前界面获取想要信息 报错注入 数据库查询返回结果没有在页面中显示但是应用程序将数据库报错信息打印到了界面上所以可以借报错信息获取想要的内容。 盲注注入 数据库结果无法从界面中直接获取。 布尔注入 利用Mysql条件不成立时返回空内容条件成立时返回正常的数据的特点进行攻击。例如substr函数截取内部返回值与字符进行比较遍历比较还原内人2 时间盲注 通过substr截取返回信息的字符通过字符推算出最终结果但是其是通过返回时间来判断的。