SQL注入函数集合

version():mysql版本
user():用户名
database():数据库名
@@datadir:读取数据库路径
@@version_compile_os:操作系统版本
concat(str1,str2,…):没有分割符地连接字符串,显示数据(数据合并)
group_concat(str1,str2,…):连接一个组的所有字符串,并以逗号分割每一条数据,显示数据
into outfile:写文件{select ‘需要写的文件’ into outfile ‘目录下’}
select ‘123123’ into outfile ‘d://study/1.txt’;(将123123添加至d盘study中新建1.txt文件中)
group_concat(列名):会把这一列中所有的内容在一行中以,隔开输出
select load_file(读文件路径);
length() =>计算字符串长度
hex() =>字符转换为16进制
@@basedir MYSQL获取安装路径

概览

group_concat(str1,str2,…):连接一个组的所有字符串,并以逗号分割每一条数据,显示数据
mid()函数:从一个字符串中截取出指定数量的字符
mid(string,start,length)
string(必需)规定要返回其中一部分的字符串。
start(必需)规定开始位置(起始值是 1)。
length(可选)要返回的字符数。如果省略,则 mid() 函数返回剩余文本。
substr()函数:函数返回字符串的一部分。
substr(string,start,length)
string(必需)规定要返回其中一部分的字符串。
start(必需)规定在字符串的何处开始。
length(可选)规定被返回字符串的长度。
left()函数:取字符的多少位字符
left(string,length)
string(必需)规定要返回其中一部分的字符串
length(可选)规定被返回字符串的前length长度的字符
load_file()函数:导出文件
Load_file(file_name):读取文件并返回该文件的内容作为一个字符串。
substr(str, pos, len):将str从pos位置开始截取len长度的字符进行返回。*注意:这里的pos位置 是从1开始的,不是数组的0开始
ascii(str):返回字符串str的最左面字符的ASCII代码值。
ord(str):同上,返回ascii码
if(a,b,c) :a为条件,a为true,返回b,否则返回c,如if(1>2,1,0),返回0
concat:用于将两个字符串连接起来,形成一个单一的字符串。返回结果为连接参数产生的字符串。

详解

UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,了解Xpath语法
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值
改变XML_document中符合XPATH_string的值
而我们的注入语句为:
updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)
其中的concat()函数是将其连成一个字符串,因此不会符合XPATH_string的格式,从而出现格式错误,爆出
ERROR 1105 (HY000): XPATH syntax error: ':root@localhost'

extractvalue():从目标XML中返回包含所查询值的字符串
extractvalue (XML_document, XPath_string)
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串)
payloaod:
  and extractvalue(null,concat(0x7e,(select @@datadir),0x7e));
extractvalue注入的原理:依旧如同updatexml一样,extract的第二个参数要求是xpath格式字符串,而我们输入的并不是。所以报错。

ASCII(s)
返回字符串 s 的第一个字符的 ASCII 码。
返回 CustomerName 字段第一个字母的 ASCII 码:
SELECT ASCII(CustomerName) AS NumCodeOfFirstChar FROM Customers;

CHAR_LENGTH(s)
返回字符串 s 的字符数
返回字符串 RUNOOB 的字符数
SELECT CHAR_LENGTH("RUNOOB") AS LengthOfString;

CHARACTER_LENGTH(s)
返回字符串 s 的字符数
返回字符串 RUNOOB 的字符数
SELECT CHARACTER_LENGTH("RUNOOB") AS LengthOfString;

CONCAT(s1,s2...sn)
字符串 s1,s2 等多个字符串合并为一个字符串
合并多个字符串
SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook") AS ConcatenatedString;

CONCAT_WS(x, s1,s2...sn)
同 CONCAT(s1,s2,...) 函数,但是每个字符串直接要加上 x,x 可以是分隔符
合并多个字符串,并添加分隔符:
SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;

FIELD(s,s1,s2...)
返回第一个字符串 s 在字符串列表(s1,s2...)中的位置
返回字符串 c 在列表值中的位置:
SELECT FIELD("c", "a", "b", "c", "d", "e");

FIND_IN_SET(s1,s2)
返回在字符串s2中与s1匹配的字符串的位置
返回字符串 c 在指定字符串中的位置:
SELECT FIND_IN_SET("c", "a,b,c,d,e");

FORMAT(x,n)
函数可以将数字 x 进行格式化 "#,###.##", 将 x 保留到小数点后 n 位,最后一位四舍五入。
格式化数字 "#,###.##" 形式:
SELECT FORMAT(250500.5634, 2); -- 输出 250,500.56

INSERT(s1,x,len,s2)
字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串
从字符串第一个位置开始的 6 个字符替换为 baiduu:
SELECT INSERT("google.com", 1, 6, "baidu"); -- 输出:baiduu.com

LOCATE(s1,s)
从字符串 s 中获取 s1 的开始位置
获取 b 在字符串 abc 中的位置:
SELECT LOCATE('st','myteststring'); -- 5

LEFT(s,n) 返回字符串 s 的前 n 个字符
返回字符串hello 中的前两个字符
SELECT LEFT('hello',2) -- he

LEFT(s,n)
返回字符串 s 的前 n 个字符
返回字符串 abcde 的前两个字符:
SELECT LEFT('abcde',2) -- ab

LOCATE(s1,s)
从字符串 s 中获取 s1 的开始位置
返回字符串 abc 中 b 的位置:
SELECT LOCATE('b', 'abc') -- 2

LPAD(s1,len,s2)
在字符串 s1 的开始处填充字符串 s2,使字符串长度达到 len
将字符串 xx 填充到 abc 字符串的开始处:
SELECT LPAD('abc',5,'xx') -- xxabc

MID(s,n,len)
从字符串 s 的 start 位置截取长度为 length 的子字符串,同 SUBSTRING(s,n,len)
从字符串 HELLO 中的第 2 个位置截取 3个 字符:
SELECT MID("HELLO", 2, 3) AS ExtractString; --ELL

POSITION(s1 IN s)
从字符串 s 中获取 s1 的开始位置
返回字符串 abc 中 b 的位置:
SELECT POSITION('b' in 'abc') -- 2

REPEAT(s,n) 将字符串 s 重复 n 次
将字符串HELLO重复三次:
SELECT REPEAT('HELLO',3)

REPLACE(s,s1,s2)
将字符串 s2 替代字符串 s 中的字符串 s1
将字符串 abc 中的字符 a 替换为字符 x:
SELECT REPLACE('abc','a','x') --xbc

REVERSE(s)
将字符串s的顺序反过来
将字符串 abc 的顺序反过来
SELECT REVERSE('abc') -- cba

RIGHT(s,n)
返回字符串 s 的后 n 个字符
返回字符串 HELLO 的后两个字符:
SELECT RIGHT('HELLO',2)

RPAD(s1,len,s2)
在字符串 s1 的结尾处添加字符串 s2,使字符串的长度达到 len
将字符串 xx 填充到 abc 字符串的结尾处:
SELECT RPAD('abc',5,'xx') -- abcxx

STRCMP(s1,s2)
比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1<s2 返回 -1
比较字符串:
SELECT STRCMP("A", "A"); -- 0</pre>

SUBSTR(s, start, length)
从字符串 s 的 start 位置截取长度为 length 的子字符串
从字符串 ASDF 中的第 2 个位置截取 3个 字符:
SELECT SUBSTR("ASDF", 2, 3) AS ExtractString; -- SDF

SUBSTRING(s, start, length)
从字符串 s 的 start 位置截取长度为 length 的子字符串
从字符串 ASDF 中的第 2 个位置截取 3个 字符:
SELECT SUBSTRING("ASDF", 2, 3) AS ExtractString; -- SDF

SUBSTRING_INDEX(s, delimiter, number)
返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串。
如果 number 是正数,返回第 number 个字符左边的字符串。
如果 number 是负数,返回第(number 的绝对值(从右边数))个字符右边的字符串。
SELECT SUBSTRING_INDEX('ab','',1) -- a
SELECT SUBSTRING_INDEX('ab','',-1) -- b
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('abcde','',3),'',-1) -- c

AVG(expression)
返回一个表达式的平均值,expression 是一个字段
返回 Products 表中Price 字段的平均值:
SELECT AVG(Price) AS AveragePrice FROM Products;

CEIL(x) | 返回大于或等于 x 的最小整数 
SELECT CEIL(1.5) -- 返回2

CEILING(x) | 返回大于或等于 x 的最小整数 
SELECT CEIL(1.5) -- 返回2

COUNT(expression)
返回查询的记录总数,expression 参数是一个字段或者 * 号
返回 Products 表中 products 字段总共有多少条记录:
SELECT COUNT(ProductID) AS NumberOfProducts FROM Products;

FLOOR(x) | 返回小于或等于 x 的最大整数
小于或等于 1.5 的整数:
SELECT FLOOR(1.5) -- 返回1

几个关于floor报错原理的解释
https://www.cnblogs.com/xdans/p/5412468.html
https://www.cnblogs.com/litlife/p/8472323.html
http://www.cnblogs.com/xishaonian/p/6227405.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,332评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,930评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,204评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,348评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,356评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,447评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,862评论 3 394
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,516评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,710评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,518评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,582评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,295评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,848评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,881评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,121评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,737评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,280评论 2 341

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,440评论 0 13
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,764评论 5 116
  • String类 1、String对象的初始化 由于String对象特别常用,所以在对String对象进行初始化时,...
    简诗阅读 371评论 0 1
  • package cn.itcast_01;/* 字符串:就是由多个字符组成的一串数据。也可以看成是一个字符数组。 ...
    蛋炒饭_By阅读 577评论 0 0
  • 无论你遇见谁,他都是对的人; 无论发生什么事,那都是唯一会发生的事; 不管事情开始于哪个时刻,都是对的时刻; 已经...
    _郭永山_阅读 283评论 0 0