web安全的学习之路(四)

SQL注入的原理

存在SQL注入漏洞需要满足两个条件
1.前端传给后端的参数内容是用户可以控制的。
2.传入的参数可以拼接成SQL语句,并且带入到数据库中进行查询。
攻击者往往利用这两个条件判断出是否存在SQL漏洞,并且通过构造语句,使数据库信息泄露。

是否存在SQL漏洞的判断语句

要知道,最终呈现到后端的是数据库中的代码,所以我们要了解数据库执行了哪些代码说明存在SQL漏洞
当外部传入的参数是1时,数据库执行了以下语句:

select * from users where id=1

当传入的参数是 and 1 = 1时,数据库执行了以下语句:

  select * from users where id = 1 and 1=1

因为 1=1为真,则页面返回id=1时的结果,如果我们这时候传入参数and 1= 2,数据库执行以下语句:

select * from users where id = 1 and 1=2

因为1=2为假,所以页面返回的就是和id=1不同的结果。
此时就可以判断是否存在SQL漏洞了。

Union注入攻击

靶场:墨者学院mysql注入基本练习场
打开网页,找到用户名,密码栏下面的通知公告,点开页面,初步观察,可以看到url中可以尝试注入
首先判断有没有注入点(这里是练习靶场,肯定有,但是,在实战中,这一步必不可少)使用前文中的代码,我们在后面输入

and 1=1 

查看页面返回情况,发现返回正常页面,再输入

and 1=2

看到返回页面变成了空白,说明存在SQL注入漏洞,可以开始攻击。
我们首先应该获得数据库的数据表的字段数量,所以使用order by 语句:

order by * ( * 为你猜测的字段数量)

我猜测的是5,但是显示的界面报错,那么就尝试一下4,界面没有报错,那么就说明该数据库的数据表的字段数量是4
使用Union攻击:

union select 1,2,3,4

根据页面显示的情况来看,原本的标题变成了2,原本的正文变成了3,说明2,3可以让服务端返回数据,那么就先选用2处进行注入操作
接下来我们需要获取他的数据库名称:

id=-1 union select 1,database(),3,4

页面返回了数据库名称mozhe_Discuz_StormGroup
获得了数据库名称,接下来获取表名

select table_name from information_schema.tables where table_schma='mozhe_Discuz_StormGroup' limit 0,1

这里需要说明,因为使用了limit 语法,所以,这条语句只能查询到第一个表的名称,类似这个靶场,第一个表中存放的是id,是一些对我们没有什么用处的数据,这里需要修改limit后面的第一个数字,改成1,那么显示的是第二个表的名称,以此类推,第一个表的名称为StormGroup_member

接下来我们获取StormGroup_member 表的第一个字段名:

select column_name from information_schema.columns where table_schema='mozhe_Discuz_StormGroup' and table_name='name' limit 0,1

这里的limit 和上文中提到的是一样的,不再阐述。这里建议获取的字段名至少3个,因为数据放在哪里都是有可能的。
到了查询数据的时候啦,使用如下代码:

select name from mozhe_Discuz_StormGroup.StormGroup_member limit 0,1

就获取了这个靶场中的用户名中的第一个用户名。
以此类推,我们查询到两个一模一样的用户名,两个不一样的密码,初步推测是md5加密,使用在线工具进行解密,就可以得到两个密码,尝试之后发现,第一个密码是错误的而第二个密码是正确的。
至此,union 攻击已经介绍完了,靶场的题目也已经解决啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值