SQL注入准备(MySQL查询语句、URL编码)
文章目录
MySQL常用查询语句
select user(); 当前MySQL 登录用户名
select database(); 当前MySQL 数据库名
select version(); 当前MySQL 版本
select @@version; 当前MySQL 版本
select @@basedir; 当前MySQL 安装路径(MySQL安装目录)
select(length("abc")); 字符串长度
select concat("ab","cd"); 连接字符串
select substring(str,pos,len); pos可以是负值,表示倒数取
select substring("hello",3); 返回llo,截取从第三个字符开始之后的所有字符
select substring("hello",2,2); 返回el,只截取从第2个字符开始之后的2个字符
select mid("hello",2,2); 返回el,只截取从第2个字符开始之后的2个字符
select ord("a"); 返回ASCII码值,用单引号也可
select sleep(4); 睡眠4秒,睡眠指定描述
select * from biao limit m,n; 从表的m行(位置,行从0开始算)开始,取到m+n行(取n条记录)
SELECT * FROM biao LIMIT 5,10; 检索记录行 6-15
注释
在url中,如果是get请求(也就是在浏览器中输入的url) 解释执行的时候,url中#号是用来指导浏览器动作的,对服务器端无用。
所以,HTTP请求中不包括#,使用#闭合无法注释,会报错;而使用--
(有个空格),在传输过程中空格会被忽略,同样导致无法注释。
所以在get请求传参注入时才会使用--+
(或者--%20
)的方式来闭合,因为+会被解释成空格。
--%20
把空格转换为urlencode编码格式。同理把#
变成%23
,也不报错。
urlencode是一个函数,可将字符串以URL编码,用于编码处理。
如果是post请求,则可以直接使用#
来进行闭合。常见的就是表单注入,如我们在后台登录框中进行注入。
URL编码
URL(Uniform Resource Locator,统一资源定位器),是WWW的统一资源定位标志,指网络地址。
URL由4部分组成:协议、主机、端口、路径。
URL编码(URL encoding),也称作百分号编码(Percent-encoding), 是特定上下文的统一资源定位符 (URL)的编码机制。
编码原理:
将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。
例如:
空格ASCII码是32,对应16进制是20,那么urlencode编码结果是:%20
,但在新标准中空格对应的是+
。
部分转换规则如下:
空格 ! " # $ % & ' ( ) 0 1
%20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31
+ @ : ; < = > ? z { } ~
%2B %40 %3A %3B %3C %3D %3E %3F %7A %7B %7D %7E
UrlEncode编码/解码在线网站:
http://tool.chinaz.com/tools/urlencode.aspx
https://blog.csdn.net/Hardworking666
本人主要使用CSDN,地址献上,请多多指教。