urldecode urldecode非法

本文由“东塔网络安全学院”总结

射击场介绍:

SQL注入的编码注入

今天给大家介绍一下《东塔攻防世界》中的靶场之一:“SQL注入的编码注入”。

一、实验介绍

1.SQL注入

SQL注入是网站中最常见、最简单的漏洞。主要原因是程序员在开发用户与数据库的交互系统时,没有对用户输入的字符串进行过滤、转义、限制或处理,导致用户通过输入精心构造的字符串非法获取数据库中的数据。

2.编码注入

程序在执行一些操作之前,往往会进行一些编码处理,编码函数也是有问题的。通过输入与代码转换功能不兼容的特殊字符,输出字符可能成为有害数据。常见的编码注入是由mysql宽字节和urldecode/rawurldecode函数引起的。

urldecode urldecode非法

1)宽字节注入
PHP连接mysql时,设置“ser character_set_client=gbk”会导致编码转换的注入问题,也就是大家熟悉的宽字节注入。当有宽字节注入时,%df可以吃\ (%5c)在程序中过滤。比如:/1.php?当有id=1的宽字节注入时,那么:/1.php?Id=-1 ‘和1=1单引号将被转义为\’ but submit: /1.php?当id=-1%df ‘且1=1时,编码后%df和\反斜杠(%5c)的组合成为一个汉字。此时单引号依然存在,会被成功关闭,形成注入漏洞。
原因:由于Mysql服务器客户端数据编码是GBK,并且在设置character _ set _ client = GBK时进行GBK转码时发生攻击,所以通常的设置方法是:设置名称‘GBK’。相当于:
set
character _ set _ connection = ‘ gbk ‘,
character _ set _ results = ‘ gbk ‘,
character _ set _ client = ‘ gbk ‘

这个编码设计也有漏洞。建议使用官方的mysql_set_charset方法设置编码。调用集合名称后,当前编码也被记录,保留给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及以下版本设置set属性(PDO: attr _ emulate _ preparations,false);禁用preparcd语句的模拟效果。

4.Web应用通常使用addslashes()、mysql_real_escape_string()、mysql_escape_string()或open GPC来防止注入,即单引号(‘)、双引号(‘)、反斜杠(\)和NULL用反斜杠进行转义。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论