发布于2022年11月4日2年前 针对小白的一个sql注入教程(联合查询,盲注等等) SQL句子根底:留意在mysql里每句句子完毕一定要加分号;1.查询句子:1 select database(); #查询当时运用的数据库2 select user(); #查询当时用户3 select now(); #查询当时时间4 select version(); #查询数据库版本5 show databases; #查询一切数据库6 show tables; #查询当时数据库下的一切表2.树立表库:1 create database name; #树立数据库name为你要树立的库的姓名2 drop database name; #删去数据库 name为你要删去的数据库名3 create table name (id int,username varchar(30),password varchar(40)); #树立表name为表名 其中id,username,password为字段,int为整形,varchar为字符串,30与40代表能储存的最大长度4. desc name; #看表结构,name为表名5. drop table name; #删表name为表名6. insert into name values(1,'names'); #给表增加记载,name为表名,增加1和names3.查询数据:1.select * from name; #查询表的一切记载,name为表名2. select * from name where username='admin'; #从表中查找条件usrename为admin的所以记载,可以再用and来加条件3. select * from name order by 3;#检查字段长5. select * from name union select database(); #首先查询name表的所以记载,然后查询当时数据库4.注释:单行注释:# -- (留意--后边有个空格)多行注释:/**\ /*放在要注释的开始 *\ 放在完结注释的结束SQL注入原理sql 注入进犯:经过构建特别 sql 指令作为参数传入 web 应用程序联合查询注入1.mysql里的元数据库:information_schema #用于寄存mysql的所以数据2.mysql里的元数据表:table 表:主要是记载 Mysql 当中的所库及一切表,表的字段 table_schema(用于记载库名)table_name(用于记载表名)column 表:主要是用于记载库中的表,表中的字段该表的字段 table_schema(用于记载库名)table_name(用于记载表名),column_name(用于记载字段名)咱们以sqlilabs的第一关进行解说,sqlilabs的建立可以参照前面放的dvwa的建立,我运用到的手注东西为hackbar1.首先咱们运用转义符\看看闭合用的符号是什么2.经过报错咱们能看到闭合符号用的是单引号接着咱们运用 order by 来检查字段运用到的指令是咱们这儿运用了--+注释掉了后边的代码,咱们的根本便是要闭合它本来的sql句子然后再注释掉后边的会报错的句子,这样咱们注入sql句子就能被对方数据库正常执行了发现字段为3咱们给参数 id 为一个不存在的页面接着运用 union 联合查询来得知数据库库名是什么用到的注入句子是数据库名咱们拿到了,接着咱们运用之前提到过的元数据库爆破表名成功拿到表名Group_concat()这个函数简略来说是让咱们查询到的东西放在 1 行显现咱们经过判别发现 users 表最有用咱们就检查 users 表的字段名用到的句子成功拿到字段名咱们能知道这个表是用来寄存用户名和暗码的,咱们接着来取出数据 运用到的指令是成功拿到数据,增加冒号的原因是更好分辨什么是 username 什么是 password
创建帐户或登录后发表意见