SQL注入零基础实战

注:如果是零基础,那么一定要从上到下一个点一个点的学习,不然肯定有很多阻碍,一上来就想开始最后面的实战是不可能滴。

还不够了解SQL注入的可以看看我另一篇博客:
https://blog.csdn.net/weixin_45254208/article/details/105033276

还没搭建SQL注入平台的也可以看看我另外一篇博客:https://blog.csdn.net/weixin_45254208/article/details/104698495

实战前需要掌握的基础知识:

上面两篇博客的内容只是能让人简单了解SQL注入并且搭建环境,就凭这两点就想实战肯定是远远不够滴,你还需要以下基础:

1. MYSQL基础学习
这个你可以学的不是很深入,但是一定要了解基本MYSQL语句(增删改查,还有limit也常常用到)的含义。网上到处可以学习MYSQL语句,很多人写了博客,B站上也有教学视频,我不要你觉得,我觉得,只要会上网,就可以打好MYSQL的基础
 
2. 记住三个表名(重点)
如果你有了MYSQL基础,那么你肯定知道show databases;这个命令,该命令可以查看所有的数据库,其中就包含information_schema,MYSQL默认在数据库中存放了一个“information_schema”的数据库,你所需要记住的3个表名就在该库中,分别是schemata、tables和columns

schemata表:
存储用户创建的所有数据库名,记录数据库名的字段名为schema_name

首先打开phpMyAdmin,前面搭建SQL注入平台的博客有写过怎么进去
在这里插入图片描述
进入之后,左侧是所有数据库
在这里插入图片描述
点击进入information_schema数据库,找到schemata表,可以看到该表的schema_name字段下面就是所有的数据库
在这里插入图片描述

tables表:
存储用户创建的所有数据库的库名和表名,如下图所示,记录库名和表名的字段分别为table_schema和table_name。(点击全部显示就可以不用翻页,直接看到所有数据库名以及它们对应的表名)
在这里插入图片描述

columns表:
存储用户创建的所有数据库的库名、表名和字段名,如下图所示,记录库名、表名和字段名的字段为table_schema、table_name和column_name
在这里插入图片描述

SQL实战:

打开phpstudy2018,启动服务,记住phpstudy下面的SQL注入平台文件夹的名字,这里我的是sqli-labs-master。
在这里插入图片描述
访问SQL注入平台,进入第一题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
黄色字体是题目的提示:请输入ID作为带有数字值的参数。那就传个?id=1(?用于在url中分隔实际的URL和参数)
在这里插入图片描述
并未报错,并且返回了信息
在这里插入图片描述
然后在?id=1后面加 ’ (通常先加单引号试错,其实双引号,反斜线,数字等都可以试错),结果报错,查看报错信息’‘1’’ LIMIT 0,1’
在这里插入图片描述
在这里插入图片描述
由于报错信息是用两个单引号括起来的,所以去掉首尾的两个单引号就是实际上传的了,去掉之后便可以看出问题所在
在这里插入图片描述
在MYSQL中order by语句用于根据指定的列对结果集进行排序,注释符是两个- -加一个空格,而在url中是不能用空格的,空格在url中是用加号+来表示的,如果传入的参数为?id=1' order by 3 --+,那么实际上是下面这样的
在这里插入图片描述
在url中输入并访问,返回正常,说明可以根据第3个字段排序,目前已知有3个字段
在这里插入图片描述
在这里插入图片描述
order by 3表示根据字段3来排序,那么order by 4呢?3换成4就报错,所以得知表中只有三个字段
在这里插入图片描述
在这里插入图片描述
所以传入一句?id=0' union select 1,2,3--+,看看回显
这里的select1,2,3不懂的,有一篇不错的博客可以解惑:https://blog.csdn.net/weixin_44840696/article/details/89166154
在这里插入图片描述
可以看出数字2和3就是注入的通道,前端与数据库之间的通道
在这里插入图片描述
数字2,3不向任何数据库查询,只是回显,那么将2,3换成version()和user()
在这里插入图片描述
结果回显了数据库的版本和用户名
在这里插入图片描述
将user()改为database(),查看当前数据库
在这里插入图片描述
得知当前数据库是security
在这里插入图片描述
数据库的名字知道了,数据表名还会远吗?接下来就会用到前面讲到的数据库information_schema里面的3张表了,所以赶紧复习一下,这次复习,表的字母拼写全部用小写,反正不区分大小写,小写更容易记忆
在这里插入图片描述
查询security数据库中的数据表

?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

在这里插入图片描述
在这里插入图片描述
验证一下,确实是这几个表
在这里插入图片描述
数据表的名字知道了,字段名还会远吗?就拿数据表referers举例

?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='referers' --+

在这里插入图片描述
在这里插入图片描述
验证一下,OK
在这里插入图片描述
字段名知道了,字段值还会远吗?以users表为例,除了主键id,还有有用户名(username)和密码(password)两个字段
在这里插入图片描述
直接查字段值(这里的users就不需要加引号了)

?id=0' union select 1,group_concat(username,password),3 from users --+

在这里插入图片描述
查询成功
在这里插入图片描述
能看到这里肯定是会一点了,初次利用一个SQL注入漏洞可以查看到数据库里面这么多的信息,这的确有点amazing,所以说无知者无畏啊,真的是要不断学习,其他姿势的注入还有很多,我也就不写了。这次博客一是记录一下自己学习SQL注入的过程,二是分享给更多像我这样的小白来当作一个教程,三是…三什么也不是,就酱紫了。

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值