当前位置: 首页 > news >正文

CTF实战:用Sqlmap破解表单输入型SQL注入题(输入账号密码/usernamepassword)

目录

引言

步骤1:用Burp Suite捕获表单请求

步骤2:用Sqlmap获取数据库名称

参数解释:

输出示例(根据题目环境调整):

步骤3:获取目标数据库中的表名

参数解释:

输出示例:

步骤4:获取表中字段及数据

参数解释:

输出示例(关键部分):

注意事项与扩展技巧

总结


引言

在CTF(网络安全竞赛)中,SQL注入是最经典的题型之一。其中,​表单输入型注入​(即通过POST请求提交的表单参数触发注入)尤为常见——无论是Web安全入门练习,还是高阶攻防对抗,这类题目都能很好地考察选手对SQL注入原理的理解与工具运用能力。

以下面的题目为例:

步骤1:用Burp Suite捕获表单请求

表单注入的核心是​​拦截POST请求​​,并将请求保存为Sqlmap可识别的格式(.txt)。具体操作如下:

  1. 打开目标页面,找到需要提交数据的表单(例如登录框、搜索框等)。
  2. 启动Burp Suite,配置浏览器代理(默认端口8080),确保流量经过Burp。
  3. 在表单中填写任意数据(如用户名填test,密码填123),提交表单。
  4. 在Burp的“Proxy”标签页中,找到刚提交的POST请求(状态码通常为200或302),右键选择“Send to Repeater”(发送到重放模块)。
  5. 点击“Repeater”标签,确认请求的Body部分包含表单参数(例如username=test&password=123)。

保存信息到txt文件里(这里保存到target.txt文件里):

步骤2:用Sqlmap获取数据库名称

目标:通过表单参数(如username)触发注入,获取目标数据库的所有库名。

进入cmd执行命令(注意要在sqlmap目录下):

python sqlmap.py -r target.txt -p username --batch --dbs
参数解释:
  • -r target.txt:指定读取之前保存的请求文件。
  • -p username:指定注入参数(即表单中可能被注入的字段,这里是username)。
  • --batch:自动确认所有交互选项(省去手动输入的麻烦)。
  • --dbs:枚举目标服务器上的所有数据库。
输出示例(根据题目环境调整):

这里看到有一个名为geek的数据库(非系统库,大概率是题目目标库),后续操作将围绕它展开。

步骤3:获取目标数据库中的表名

目标:在geek数据库中,找到可能存储用户数据的表(如userusers等)。

执行命令:

python sqlmap.py -r target.txt -p username --batch -D geek --tables
参数解释:
  • -D geek:指定要操作的目标数据库(geek)。
  • --tables:枚举该数据库下的所有表。
输出示例:

 这里看到两个表:geekuserl0ve1ysq1。根据CTF常见命名习惯,l0ve1ysq1(可能是“love1ysql1”的变形)更可能是存储敏感数据的表(比如Flag),优先排查它。

步骤4:获取表中字段及数据

目标:从l0ve1ysq1表中提取字段名和具体数据(尤其是Flag)。

执行命令:
 

python sqlmap.py -r target.txt -p username --batch -D geek -T l0ve1ysq1 --dump
参数解释:
  • -T l0ve1ysq1:指定要操作的表(l0ve1ysq1)。
  • --dump:导出该表的所有数据(包括字段名和内容)。
输出示例(关键部分):


最终,我们在id=16的记录中找到了Flag:flag{898d3190-8bd7-4677-b553-8142542ae251}

注意事项与扩展技巧

  1. ​参数选择​​:如果-p指定的参数(如username)未被注入,Sqlmap会提示“parameter not injectable”,此时需尝试其他参数(如password)。
  2. ​绕过过滤​​:若题目中对关键字(如UNIONSELECT)做了过滤,可通过--tamper参数使用绕过脚本(如space2comment用注释符替换空格)。
  3. ​手动验证​​:Sqlmap虽强大,但CTF中可能存在“反套路”设计(如需要结合报错注入、布尔盲注)。建议先手动验证注入点类型(通过输入'看是否报错),再决定是否完全依赖工具。
    ​​​​​

总结

本次实战演示了如何用Sqlmap快速破解表单输入型SQL注入题:从Burp抓包保存请求,到通过--dbs--tables--dump逐步获取数据库结构与数据,最终定位Flag。

 (注:本文实验环境为模拟场景,请勿用于非法渗透测试。)

http://www.dtcms.com/a/309152.html

相关文章:

  • SpringBoot AI应用实战:从图像识别到预测分析
  • 【通用视觉框架】基于OpenCvSharp+WPF+YOLO开发的仿VisionMaster的通用视觉框架软件,全套源码,开箱即用
  • 机器人芯片:智能机器的“大脑”与未来趋势
  • Nature Machine Intelligence 面向机器人操作有效滑移控制的仿生轨迹模块
  • alaxea机器人由星海图人工智能科技有限公司研发的高性能仿人形机器人
  • 【LeetCode 热题 100】155. 最小栈
  • PL-0功能拓展及基于VSCode的IDE配置
  • kotlin语法和特性分析
  • PDFsam免费开源!PDF分割合并工具
  • 华为数通HCIP
  • 为什么我们需要提示词增强工程PEE(Prompt Enhancement Engineering )
  • axios请求的取消
  • ICML 2025 | 深度剖析时序 Transformer:为何有效,瓶颈何在?
  • Qt Quick 3D 基础与应用
  • 【数据结构初阶】--排序(一):直接插入排序,希尔排序
  • zabbix平台无法删除已停用主机的处理案例
  • 基于springboot的快递分拣管理系统
  • 信号发生器和示波器阻抗匹配问题
  • 重生之我在暑假学习微服务第七天《微服务之服务治理篇》
  • flutter设备图标颜色与字体颜色相同自动适配明与暗的模式
  • 力扣 hot100 Day62
  • UnityURP 使用StencilBuffer制作一个“看见看不见”的球
  • 第三方采购流程
  • 前端图片懒加载的深度指南:从理论到实战
  • 使用 whisper, 音频分割, 初步尝试,切割为小块,效果还不错 1
  • java对象的内存分配
  • linux编译基础知识-工具链
  • datagrip连接mysql数据库过程以及遇到的问题
  • Linux网络:多路转接 epoll
  • 深入讲讲异步FIFO