当前位置: 首页 > 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.lryc.cn/news/606934.html

相关文章:

  • 音频获取长度
  • armbian 启用nginx并设置访问密码
  • gpu instancer crowd 插件大规模渲染
  • 《操作系统真象还原》 第五章 保护模式进阶
  • 深度SEO优化的方式有哪些,从技术层面来说
  • WaitForSingleObject 函数参数影响及信号处理分析
  • 第15讲——微分方程
  • Shader开发(六)什么是着色器
  • 遥控器信号捕获
  • 软件反调试(7)- 基于NtSetInformationThread设置线程信息
  • 邮件系统哪个好?3种类型邮件系统详细对比
  • 阿里ai流式输出
  • OpenAI ChatGPT Agent横空出世:全能工具+实时交互,重新定义AI智能体的终极形态
  • java的冒泡排序算法
  • 多人命题系统
  • ⭐ Unity 实现UI视差滚动效果(Parallax)鼠标控制、可拓展陀螺仪与脚本控制
  • linux81 shell通配符:[list],‘‘ ``““
  • React Refs:直接操作DOM的终极指南
  • flutter——ColorScheme
  • DM8达梦数据库错误码信息汇编-8.1.4.80 20250430-272000-20149 Pack1
  • 【3】交互式图表制作及应用方法
  • 38译码器工作原理
  • 肖特基二极管MBR0540T1G 安森美ON 低电压 高频率 集成电路IC 芯片
  • 三十九、【扩展工具篇】Allpairspy 组合用例生成器:智能设计高效测试集
  • 德国威乐集团亚太中东非洲PMO负责人和继明受邀为PMO大会主持人
  • 【AMD | Docker】超级全面版本:在Docker中验证AMD GPU移动显卡可用性的方法
  • n8n】n8n的基础概念
  • 海外商城 app 系统架构分析
  • CMake Debug/Release配置生成器表达式解析
  • Kafka Streams 并行处理机制深度解析:任务(Task)与流线程(Stream Threads)的协同设计