admin管理员组文章数量:1794759
SQL注入零基础实战
注:如果是零基础,那么一定要从上到下一个点一个点的学习,不然肯定有很多阻碍,一上来就想开始最后面的实战是不可能滴。
还不够了解SQL注入的可以看看我另一篇博客: blog.csdn/weixin_45254208/article/details/105033276
还没搭建SQL注入平台的也可以看看我另外一篇博客:blog.csdn/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不懂的,有一篇不错的博客可以解惑:blog.csdn/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注入的过程,二是分享给更多像我这样的小白来当作一个教程,三是…三什么也不是,就酱紫了。
版权声明:本文标题:SQL注入零基础实战 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1687070162a131119.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论