IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> WEB攻防-通用漏洞&SQL注入&MYSQL跨库&ACCESS常规注入 -> 正文阅读

[大数据]WEB攻防-通用漏洞&SQL注入&MYSQL跨库&ACCESS常规注入

目录

#知识点:

#前置知识:

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

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

SQL注入攻击流程

ACCESS 独立存在

MYSQL 统一管理

案例:

PHP+MYSQL-简易注入-存储特性

?PHP+MYSQL-跨库注入-权限属性

SQL注入实战演练

墨者:SQL手工注入漏洞测试(Access数据库)


#知识点:

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

2、Access数据库注入

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

#前置知识:

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

脚本代码在实现代码与数据库进行数据通讯时(从数据库取出相关数据进行页面显示),将定义的SQL语句进行执行查询数据时。其中的SQL语句能通过参数传递自定义值来实现控制SQL语句,从而执行恶意的SQL语句,可以实现查询其他数据(数据库中的敏感数据,如管理员帐号密码)。这一个过程就可以叫做SQL注入漏洞

漏洞产生根本条件:可控变量 特定函数

http://192.168.46.160:85/Production/PRODUCT.asp

http://192.168.46.160:85/Production/PRODUCT.asp?id=1513

如果下面的URL地址测试注入判断id有注入,手工测试该如何进行?

http://192.168.46.160:85/Production/PRODUCT.asp?id=1513&page=1

Production/PRODUCT.asp?id=1513 注入语句&page=1? 对

Production/PRODUCT.asp?id=1513&page=1 注入语句? 错

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

通过sql注入可以实现对数据库数据的增删改查

SQL注入攻击流程

1、猜测数据库类型

2、根据类型选择思路

ACCESS 独立存在

ACCESS:access数据库是单独存在的数据库,它不像mysql存在多个数据库。

信息:数据库名、表名、列名、数据

MYSQL 统一管理

MYSQL数据库:为了网站和数据库的安全性,MYSQL内置有ROOT最高用户,划分等级,每个用户对应管理一个数据库,这样保证无不关联,从而不会影响到其他数据库的运行。

信息:?最高数据库用户=root用户、表名、列名、数据

数据库A=网站A=数据库用户A、数据库B=网站B=数据库用户B

MYSQL注入的思路:

1、非ROOT的注入攻击:常规类的猜解

2、ROOT用户的注入攻击:文件读写操作,跨库查询注入等

黑盒测试中可以采用user()获取当前用户权限,白盒中看连接用户即可!

MYSQL5.0以上版本:

自带的数据库名information_schema,注入时可以通过以下数据库名查询信息

information_schema:存储数据库下的数据库名及表名,列名信息的数据库

information_schema.tables:记录表名信息的表

information_schema.columns:记录列名信息表

information_schema.schemata:记录所有数据库名

version():查询数据库版本

user():查询用户是否为root

@@version_compile_os:查询系统

database():查询数据库名

案例:

PHP+MYSQL-简易注入-存储特性

先查看一下数据库信息。(正常的SQL注入下肯定不知道数据库的信息,为了方便讲解先透露一下数据库信息,以防出错)

访问该页面并传参id为1,成功获取了数据

?

那么开始利用and判断是否有注入点

and:可以理解为与的关系,当and左右的两个数据有一个为假时,结果就为假。比如:1=1 and 1=0 结果为假。

下面测试中,and左边的页面刚才访问过可以正常访问,证明为真。如果and后面的数据为假,那么整个表达式都为假,页面就不会正常显示。证明了后面数据可以被执行,那么就是有注入点。(注:也可以使用or,or的表达式中只有一个为真表达式就为真。)

union select 1,2,3:union代表联合查询,为了执行后面的代码。select为查询语句,select直接加数字时,可以不写后面的表名,那么它输出的内容就是我们select后的数字。

通过查询可以看见有1和2两个返回值,那么证明了1的位置和2的位置的数据可以被显示出来。(目前知道数据库中有三列数据,黑盒测试的情况下需要使用折半查找去试)

后面就非常容易了,知道了返回的位置,那么就可以直接利用一些函数查询出数据库的一些基本信息。

PHP+MYSQL-跨库注入-权限属性

首先利用函数database()获取数据库名,数据库为mozhu

UNION SELECT table_name,2,3?from information_schema.tables where table_schema='mozhu'

语句分析:union和select上面有解释不在多说。information_schema.tables是mysql数据库中记录表名的表。table_schema代表的是数据库名称。table_name能理解为information_schema.tables表中的一个列名,而这个列名存储的是数据库中的表名。

语句含义:查询数据库中记录表名的表中的table_name的列,条件为数据库名是mozhu。

已知:数据库为mozhu????????表名为ink

UNION SELECT column_name,2,3 from information_schema.columns where table_name='ink' and table_schema='mozhu'

语句分析:information_schema.columns是mysql数据库中记录列名的表。column_name就是information_schema.columns这个表中的一列,列名存储的是数据库中的列名。

语句含义:查询information_schema.columns这个表,条件为表名是ink,数据库名是mozhu,获取表里的column_name信息。

已知:数据库为mozhu????????表名为ink????????列名为id gName age

UNION SELECT id,gName,age from ink

语句分析:获取ink表中的id,gName,age的信息

由于页面只有两个显示位,age无法显示,可以修改对应的显示位信息进行显示。

SQL注入实战演练

连接:www.comresearch.org/researchDetails.php?id=MQ==

通过连接可以知道id后面的值为base64加密(==结尾通常为base64加密),那么注入的语句也要是base64加密

利用order by查询表名的列数,order by后面跟数字可以进行列数的查询,若列数正确正常返回页面,否则报错。

利用折半查找可以发现列数为7

?

?根据上面的思路,使用union select查询显示位,暴露位置为2,5,4

?

?利用user,database,version查询用户是否为root,数据库名和版本类型

因为版本号时4.1.22,所以没有办法利用information_schema。小编尝试过利用字典并使用python进行暴力破解,但是没有成功。感兴趣的兄弟可以尝试一下。如果是5.0以上的版本,可以直接使用infomation_schema,思路最重要。

墨者:SQL手工注入漏洞测试(Access数据库)

进入漏洞之后记得点维护通知,这里是突破口,不要上来就暴击破解,它是一只数据库漏洞。

和mysql数据库的注入原理一样,直接用and进行注入点探测,发现页面报错,证明存在注入点。

?

经过小编的认真查询,order by为5时报错,为4时正确,证明表中存在四个字段

and 1=2 union select 1,2,3,4测试显示位,显示位为2和3?

union select 1,2,3,4 from admin?

admin表直接利用猜解即可,通过返回值知道显示为2和3

提示:在Access数据库中,union两边的数据都为真才会进行显示。在偏移注入的时候,先用order by查询网页表的列数,再利用union查询其他表的列数,如果其他表的列数较少,直接利用*代替。

比如:www.mozhu.com 的order by为8,admin表为4列。语句www.mozhu.com union select 1,2,3,4,* from admin即可正常返回值,查询制表位。

and exists(select id from admin)

使用exists查询列名是否存在,存在则正常返回页面。靶机中常用列名id,username,passwd或者password,最后会发现username和passwd可以正常返回,代表存在列名。

?

union select 1,username,passwd,4 from admin

利用显示位获取信息即可

?md5对密码进行解密并登录获取flag

MD5:32或16位位由数字"0-9"和字母"a-f"所组成的字符串

?

?

?

?

?

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:48:45  更:2022-10-08 20:51:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 -2025/5/1 19:20:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码