网络安全-SQL注入实战

SQL注入简介

SQL注入是web程序对用户输入数据的合法性没有进行判断,在管理员不知情的情况下进行非法操作。攻击者可以通过提交数据库查询代码,通过程序返回的结果,获取数据库中的信息。SQL注入攻击会导致数据库风险,其中包括刷库、脱裤、撞库。它是目前最危险的Web应用程序漏洞之一。

SQL注入漏洞产生的原因是网站应用程序在编写时未对用户提交至服务器的数据进行合法性校验,即没有进行有效地特殊字符过滤,导致网站服务器存在安全风险

漏洞危害:机密数据被窃取;核心业务数据被篡改;网页被篡改;数据库所在服务器被攻击从而变为傀儡主机,导致局域网(内网)被入侵。

修复建议

在网页代码中对用户输入的数据进行严格过滤;(代码层)

部署Web应用防火墙;(设备层)

对数据库操作进行监控。(数据库层)

代码层最佳防御sql漏洞方案

采用sql语句预编译和绑定变量,是防御sql注入的最佳方法。

原因

采用了PreparedStatement,就会将sql语句: “select id, no from user where id=?” 预先编译好,也就是SQL引擎会预先进行语法分析,产生语法树,生成执行计划,也就是说,后面你输入的参数,无论你输入的是什么,都不会影响该sql语句的 语法结构了,因为语法分析已经完成了,而语法分析主要是分析 sql命令 ,比如 select ,from ,where ,and, or ,order by 等等。所以即使你后面输入了这些 sql命令 ,也不会被当成 sql命令 来执行了,因为这些 sql命令 的执行, 必须先的通过语法分析,生成执行计划,既然语法分析已经完成,已经预编译过了,那么后面输入的参数,是绝对不可能作为 sql命令 来执行的,只会被当做字符串字面值参数,所以sql语句预编译可以防御sql注入。

实战:

后台界面,最简单的方式就是在登陆后台页面

直接进行注入,系统用户,用户名可直接测试admin,一般系统管理员最常见的用户名就是admin,在添加用户名的地方输入1’,用bp抓包查看返回的参数

惊喜的发现成功报错并没有过滤掉,返回的信息是输入的SQL语法错误。这里存在注入,下面直接把抓取到的post包进行复制,存放在123.txt里。接下来直接用sqlmap进行跑,爆出如下数据库。

接下来选择数据库进行爆表,常见的工具为sqlmap,当然还有别的工具可以使用,但是个人建议

学习的时候还是以手动注入为主要手段,工具进行辅助。

Sqlmap可以直接跑出相关数据库以及相关数据,那么sql注入到底是如何完成这些操作的呢,让我们来详细解释一下sql注入的核心原理。

比如我们使用的登录接口:在登录界面包括用户名和密码输入框,以及提交按钮,输入用户名和密码,提交。

    登录时调用接口/user/login/ 加上参数username、password,首先连接数据库,然后后台对请求参数中携带的用户名、密码进行参数校验,即sql的查询过程。假设正确的用户名和密码为ls和123456,输入正确的用户名和密码、提交,相当于调用了以下的SQL语句。

SELECT * FROM user WHERE username = ‘ls’ AND password = ‘123456’

    sql中会将#及--以后的字符串当做注释处理,如果我们使用“' or 1=1 #” 作为用户名参数,那么服务端构建的sql语句就如下:

select * from users where username=‘’ or 1=1#’ and password=‘123456’

    而#会忽略后面的语句,因此上面的sql也等价于:

select * from users where username=‘’ or 1=1复制代码

    而1=1属于常等型条件,因此这个sql便成为了如下,查询出所有的登陆用户。

select * from users

    其实上面的sql注入只是在参数层面做了些手脚,如果是引入了一些功能性的sql那就更危险了,比如上面的登陆接口,如果用户名使用这个“' or 1=1;delete \* from users; #”,那么在";"之后相当于是另外一条新的sql,这个sql是删除全表,是非常危险的操作,因此 如果一个系统存在sql注入,那即可通过sql查询这个系统里面的任何数据,当然也可以修改任何数据,这对于一个系统是非常不安全的。

当然这只是最简单的sql注入实例,大部分的时候,简单的sql注入很有可能被转换掉或者被过滤。下一期介绍sql注入绕过和伪装

为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

[2024最新优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]


在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

[2024最新优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值