【web安全】sql注入之宽字节注入的基本流程

宽字节注入原理:

是因为网页使用的编码跟数据库使用的编码不一样,然后数据库还开了魔术引号(magic_quotes_gpc函数)。

比如网页用UTF-8编码,数据库使用的是GBK编码,然后数据传输的时候要转换编码,魔术引号就是将一些特殊字符转码,在特殊字符前面加,而宽字节注入就是利用魔术引号。例如输入’这个符号,开了魔术引号就是变成’,因为\这个符号是一个字符,然后我们就在他前面加%df。它就变成了%df,由于网页编码跟数据库编码不一样说一要转换,转换后就变成了%df%5c,然后GBK编码是双字节编码,%df%5c就被转换成了運这字,所以’就逃逸了出来。还有一种就是在\前面直接加汉字,因为在GBK中,一个汉字是3个字接,\是一个字节,结合后就变成了4个字节,然后就被编码成了两个汉字。

在php5.4后就将魔术引号移除,但是可以用addslashes()函数开启

什么情况下使用宽字节注入?

1、存在魔术引号
2、要php编码和数据库不同[常见的是GBK]

你可能感兴趣的:(【web安全】)