sqli-labs less-11-17
时间: 2025-01-06 10:19:08 浏览: 3
### 关于 sqli-labs 中 less-11 到 less-17 的解决方案和解释
#### Less-11: 基本布尔盲注 SQL 注入漏洞
此级别展示了如何通过布尔条件来推断数据库中的数据。攻击者可以通过发送不同的查询并观察应用程序响应的变化来进行注入。
```sql
?id=1' AND ASCII(SUBSTRING((SELECT database()),1,1))>90 --
```
上述语句尝试猜测当前使用的数据库名称的第一个字符的ASCII码值是否大于90[^1]。
#### Less-12: 时间延迟型盲注 SQL 注入漏洞
该实验利用时间函数 `SLEEP()` 或 `BENCHMARK()` 来判断服务器执行特定操作所需的时间,从而推测出某些信息。
```sql
?id=1' AND IF(ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT 1),1,1))>97,SLEEP(5),false) --
```
这段代码会根据指定条件下是否成立而使请求暂停几秒钟,以此作为反馈机制[^2]。
#### Less-13: 联合查询 (UNION) SQL 注入漏洞
联合查询允许将两个或多个 SELECT 结果组合在一起显示给用户。在这个例子中,可以用来获取额外的数据集。
```sql
?id=-1 UNION ALL SELECT null,database(),null,null --
```
这里 `-1` 是为了确保原始查询返回零行记录,以便新添加的选择能够成功附加到最终输出上[^3]。
#### Less-14: 双重查询(堆叠查询)SQL 注入漏洞
当 Web 应用程序支持在同一 HTTP 请求内处理多条命令时,则可能存在这种类型的漏洞。这使得攻击者可以在一次提交里完成多项任务。
```sql
?id=1; DROP TABLE users;
```
注意,在实际环境中很少遇到这种情况,因为大多数现代框架都会阻止此类行为的发生[^4]。
#### Less-15: 错误消息泄露敏感信息
有时开发人员会在错误页面暴露过多细节,比如完整的 SQL 查询字符串甚至栈跟踪等内部实现情况。这些都可能帮助黑客构建更复杂的攻击模式。
```sql
?id=' OR '1'='1
```
如果网站未正确配置异常处理器的话,可能会显示出整个 SQL 表达式的结构,进而让入侵者更容易找到突破口[^5]。
#### Less-16: 文件读取/写入权限滥用
一些情况下,Web 应用程序允许上传文件或将动态生成的内容保存至磁盘;然而如果没有严格验证输入参数就可能导致任意位置上的文档被篡改或者下载下来查看其内容。
```sql
?file=/etc/passwd%00.jpg
```
这里的技巧在于绕过 MIME 类型检测以及路径规范化逻辑,达到访问受限资源的目的[^6]。
#### Less-17: 存储过程调用与预编译语句绕过
存储过程中往往包含了大量业务逻辑,并且通常由高级程序员编写维护。但是假如它们也接收外部可控变量的话同样面临风险。此外,对于那些声称已经启用了防备措施的应用来说,仍然有可能存在旁路方法。
```sql
CALL sp_executesql(N'SELECT * FROM sysobjects')
```
尽管许多平台默认不允许直接执行这样的指令,但在某些特殊场景下还是有机会成功的[^7]。
阅读全文