数据库
首页 > 数据库> > CTF-sql-宽字节注入

CTF-sql-宽字节注入

作者:互联网

本文章主要涉及sql宽字节注入注入的原理讲解,如有错误,望指出。(附有目录,如需查看请点右下角)

一、下图为本次文章所使用到 user表,该表所在的数据库为 test。

二、首先介绍一下本篇文章所用到的知识点:

常用到的url编码:

addslashes函数(php4,php5,php7):

格式:string addslashes(string $str)
作用:返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线(\)。这些字符是单引号(')、双引号(")、反斜杠(\)与 NULL(NULL字符)

为什么使用该函数:

在单(双)引号,反斜线,NULL前加上反斜线会起到转义的作用:以单引号为例,再加上反斜线之后,单引号就会被转义,就是说,此时的单引号仅仅是一个单引号,但已经不具备单引号原有的语法功能了(相当于单引号就仅仅是一个字符串了)这样就可以在一定程度上对sql注入进行一定的预防。

那么我们应该如何从addslashes函数中逃逸出来呢?

存在两种解决方法:

宽字节注入的原理:

原理:宽字节注入是利用mysql的一个特性,mysql在使用GBK编码的时候,会认为两个字符是一个汉字(前一个asci码要大于128,才到汉字的范围)
eg:

在用hackbar进行汉字输入的时候你会发现,那段汉字就会变成一段百分号编码,这样我们就可以利用这个原理从而把反斜杠干掉。就如上图,在进行转义之后,原本是两个百分号变成了三个,又因为汉字是由两个百分号组成,所以系统就会识别前两个百分号成一个汉字,从而将“\”干掉。%5c就是“\”

标签:百分号,字节,单引号,CTF,斜杠,sql,注入
来源: https://www.cnblogs.com/02SWD/p/CTF-sql-kuan_zi_jie.html