Kali渗透测试之DVWA系列7——SQL Injection(SQL注入)

目录

一、SQL注入

1、SQL注入漏洞原理

2、SQL注入类型

3、SQL注入过程

二、实验环境

三、实验步骤

安全级别:LOW

安全等级:Medium

安全级别:High

安全级别:Impossible


一、SQL注入

1、SQL注入漏洞原理

把SQL命令插入到Web表单提交、或输入域名、或页面提交的查询字符串中,从而达到欺骗服务器执行恶意的SQL命令。

2、SQL注入类型

  • 字符型
  • 数字型
  • 搜索型

3、SQL注入过程

  1. 判断是否存在注入,注入是字符型还是数字型;
  2. 猜解SQL查询语句中的字段数;
  3. 确定显示位置;
  4. 获取当前数据库;
  5. 获取数据库中的表;
  6. 获取表中的字段名;
  7. 下载数据

二、实验环境

1、测试机:物理机Windows 10,远程登录DVWA;安装BurpSuite

2、DVWA服务器:Windows Server 2003(192.168.247.129),启动phpStudy。

三、实验步骤

安全级别:LOW

查看源码

由源码可以看出,LOW级别的SQL注入对参数id的内容进行任何检查和过滤,存在明显的SQL注入,并且是字符型注入。

使用场景

1、判断是否存在注入,注入是字符型还是数字型

输入1,查询成功,存在SQL注入

输入 1’ and ‘1’=’1 或者 1’ or ‘1234’ = ‘1234,成功返回结果,证明该SQL注入为字符型。

2、猜解SQL查询语句中的字段数;

在输入框中输入 1’ order by 1 # 和 1’ order by 2 #  时都返回正常;对比源码,这条语句的意思是查询users表中user_id为1的数据并按第一(二)字段进行。

### Kali Linux 中针对 DVWASQL 注入攻击及绕过防御技术 #### 背景介绍 DVWA(Damn Vulnerable Web Application)是一个用于教育目的的漏洞练习平台,旨在帮助用户了解常见的Web应用安全漏洞及其利用方法。SQL注入是一种通过输入恶意SQL语句来操控数据库的行为,在低安全性配置下容易实现。 以下是关于如何在Kali Linux环境中对DVWA进行SQL注入攻击以及可能的绕过防御技巧: --- #### 一、基础环境准备 确保已安装并运行Kali Linux和DVWA服务。可以通过浏览器访问`http://<your-ip>/dvwa/`登录到DVWA界面,并设置目标难度为“Low”或更高以测试不同的防护机制[^1]。 --- #### 二、SQL Injection 攻击方式 ##### 1. **Union-Based SQL Injection** 当应用程序未正确过滤特殊字符时,可以尝试使用 `UNION SELECT` 构造查询字符串获取额外数据。 ```sql ' UNION ALL SELECT null, version(), database(); -- ``` 上述命令会返回MySQL版本号和当前使用的数据库名称。 ##### 2. **Error-Based SQL Injection** 如果服务器启用了错误回显功能,则可通过触发异常提取敏感信息。例如: ```sql ' AND (SELECT COUNT(*) FROM information_schema.tables WHERE table_name='users')>0 -- ``` 此脚本验证是否存在名为 “users”的表。 ##### 3. **Blind Boolean SQL Injection** 对于无反馈页面响应场景下的盲注,可采用布尔型判断逐步推导出隐藏字段的内容。比如逐位猜解密码hash值: ```sql ' AND ASCII(SUBSTRING((SELECT password FROM users LIMIT 1),1,1))=50;-- ``` 这里假设第一个用户的password首字母ASCII码等于50。 --- #### 三、绕过HTML转义函数htmlspecialchars() 尽管启用htmlspecialchars()能够显著提升XSS防范能力,但在某些特定条件下仍可能存在被规避的风险。例如,当开发者仅依赖默认参数调用该函数而忽略ENT_QUOTES标志时,单引号可能会保持原样从而允许执行嵌套JavaScript代码片段[^3]。 考虑如下情况: ```php <?php echo htmlspecialchars("<script>alert('test');</script>", ENT_NOQUOTES); ?> ``` 由于缺少ENT_QUOTES选项,“’”不会得到转换,因此潜在威胁依然存在。 另外需要注意的是,即使经过编码处理后的输出也可能因上下文差异再次解析成危险指令。所以建议综合运用多种手段加强整体安全性评估工作流程中的每一个环节都至关重要。 --- #### 四、高级Bypass Techniques Against Modern Defenses 随着现代框架引入ORM层抽象以及其他内置保护措施,传统手法往往难以奏效。此时需探索更多创新思路应对挑战: - 利用时间延迟特性实施基于时间轴上的逻辑推理(Time-based blind sql injection); - 结合其他类型的web漏洞(如文件上传缺陷)间接达成最终目的; - 针对具体业务逻辑设计定制化payloads等等. 总之,持续更新自己的知识体系紧跟最新趋势变化非常重要! --- ### 示例代码展示 下面给出一段简单的Python脚本来自动化探测过程: ```python import requests url = "http://target/dvwa/vulnerabilities/sqli/" data={'id':"' OR SLEEP(5)--",'Submit':'Submit'} response=requests.post(url,data=data) if response.elapsed.total_seconds()>4 : print("[+] Time Based Blind Sql Injection Detected!") else : print("[-] No vulnerability found.") ``` 以上程序发送POST请求给指定URL地址的同时附加精心构造的数据包(id字段),观察其耗时时长是否明显增加作为判定依据之一. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值