SQLMAP的使用(rails 为例)

1.启动一个项目,例如rails学习的项目,修改config/database.yml,

假设来一个接口

class YourModel::YourController < ApplicationController
def test_sqli
  sql = "select * from your_table_name where id = " + params[:my_id] + " or 1 = 1"
  @blogs = ActiveRecord::Base.connection.execute(sql)
end

我们启动之后,可以正常访问接口,返回的是博客数据。例如我在本地启动一个测试的demo:

controller:

class Api::BlogsController < ActionController::Base
  def sqli_test
    sql = "select * from blogs where id = " + params[:blog_id] #+ " or 1 = 1"
    #sql = "select * from blogs where id = " + params[:blog_id] + " or 1 = 1"
    @blogs = ActiveRecord::Base.connection.execute(sql)
    render json: {
      blogs: @blogs
    }   
  end 
end

routes:

  namespace :api do                                                                   |~                                                                                     
    resources :blogs do                                                               |~                                                                                     
      collection do                                                                   |~                                                                                     
        get :sqli_test                                                                |~                                                                                     
      end                                                                             |~                                                                                     
    end                                                                               |~                                                                                     
                                                                                      |~                                                                                     
  end 

url:

http://localhost:3000/api/blogs/sqli_test?blog_id=2

返回的是博客的数据:

{
  "blogs": [
    {
      "id": "2",
      "title": "test",
      "time": null,
      "content": "<p>test</p>\r\n\r\n<p>&nbsp;</p>\r\n",
      "created_at": "2023-12-12 01:06:20.234003",
      "updated_at": "2023-12-12 01:06:20.234003",
      "url": null,
      "edit_url": null,
      "category": null,
      "category_id": null,
      "is_top": "f"
    }
  ]
}

但是这种写法会把数据库的权限暴露出去,会被人占领,也就是说你的机器会被人直接拿到root,

例如我把注释的or 1=1取消注释,那么接口就会返回所有的博客数据:

或者我恢复注释,在请求参数中增加,返回的也是blog的所有的数据:

这就是黑客手法,就是没有权限,因为1=1是永远都是true

这就是通过修改参数来改变SQL的行为,我们本来是希望当前的用户只能查到某个的id的内容,但是他一下子就把所有的内容都拿到了。

那么这里暴露出来的点就是越权,超越了他能读取的权限,比如说我们让普通用户只能读取普通的 用户的,管理员能读取所有人的,那么他瞬间就让自己提升了权限, 成为了管理员,进一步的话,他能把整个数据库给删除掉。比如说,他可以在or 1 = 1之后增加一个分号,增加一个drop table/database,但是还有更高级的,他能拿到整个数据库的root权限,甚至拿到这个主机,

SQLmap是一个工具,一个非常强大的工具,里边包含了几百种SQL注入的攻击方式,sql注入学的话可能需要学习半年一年,有很多很多,

有一些博士,他在两百多种攻击方式里贡献了一条,那么他就可以毕业了。

他会根据不同的数据库类型进行不同的构造:

我们已经有了sqlmap,那么我们可做一个脚本小子,意思是我们对原理不太懂,但是能让我用这个脚本,我就可以用的很好。在sqlmap的github或者使用命令查看帮助:

python3 /workspace/sqlmap-dev/sqlmap.py -h

 可以使用target,来进行注入

使用-p 增加参数:

例如:

python3 /workspace/sqlmap-dev/sqlmap.py -u http://localhost:3000/api/blogs/sqli_test?blog_id=2 -p blog_id

返回了这样一些内容:

 

 使用--tables可以得到所有的table信息:

python3 /workspace/sqlmap-dev/sqlmap.py -u http://localhost:3000/api/blogs/sqli_test?blog_id=2 -p blog_id --table

使用dump  可以进行数据库的备份:

 

python3 /workspace/sqlmap-dev/sqlmap.py -u http://localhost:3000/api/blogs/sqli_test?blog_id=2 -p blog_id --dump-all

在日志里会进行信息的输出:

 可以ctrl c 取消备份。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手写数组去重

说明:以下代码如有考虑不周的bug请评论区留言,我将不断完善或者优化,谢谢 一、看结果 1.执行代码 const arr = [{ id: 1, name: "数据1" },{ id: 1, name: "数据2" },{ id: 2, name: "数据3" },{ id: 3, name: "数据4" },{ id: …

磁盘坏道修复工具-是一款非常方便实用的磁盘坏道修复软件-供大家学习研究参考

1、支持磁盘数据擦除。 2、杜绝因硬盘坏道&#xff0c;而产生个人隐私数据泄露的问题。 3、支持对该磁盘格式化。 下载&#xff1a;https://download.csdn.net/download/weixin_43097956/88625682

解决Java中GB2312字符集缺失的汉字乱码问题

最近在做一个读取CSV文件&#xff0c;解析其中数据并入库的功能&#xff0c;使用的是OpenCSV组件&#xff0c;CSV文件字符集是GB2312&#xff0c;读取文件流时使用的也是GB2312字符集&#xff0c;但最终测试结果发现写入数据库的中文中存在乱码&#xff0c;奇怪的是同一个字段中…

YOLOv8算法改进【NO.93】使用resnet18网络作为主干特征提取网络

前 言 YOLO算法改进系列出到这&#xff0c;很多朋友问改进如何选择是最佳的&#xff0c;下面我就根据个人多年的写作发文章以及指导发文章的经验来看&#xff0c;按照优先顺序进行排序讲解YOLO算法改进方法的顺序选择。具体有需求的同学可以私信我沟通&#xff1a; 第一…

大数据云计算——Docker环境下部署Hadoop集群及运行集群案列

大数据云计算——Docker环境下部署Hadoop集群及运行集群案列 本文着重介绍了在Docker环境下部署Hadoop集群以及实际案例中的集群运行。首先&#xff0c;文章详细解释了Hadoop的基本概念和其在大数据处理中的重要性&#xff0c;以及为何选择在Docker环境下部署Hadoop集群。接着&…

致远互联-OA wpsAssistServlet 任意文件读取漏洞复现

0x01 产品简介 致远互联-OA 是数字化构建企业数字化协同运营中台,面向企业各种业务场景提供一站式大数据分析解决方案的协同办公软件。 0x02 漏洞概述 致远互联-OA wpsAssistServlet 存在任意文件读取漏洞,攻击者可读取系统密码等敏感信息进一步控制系统。 0x03 复现环境…

【开源】基于JAVA语言的农家乐订餐系统

项目编号&#xff1a; S 043 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S043&#xff0c;文末获取源码。} 项目编号&#xff1a;S043&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核…

陈可之艺术履历

陈可之&#xff0c;中国著名艺术家。国家一级美术师&#xff0c;获国务院政府津贴&#xff0c;中国农工民主党中央书画院院长&#xff0c;北京市政府文史馆馆员&#xff0c;东方油画院院长&#xff0c;北京东方书画研究会会长 &#xff0c;中国国际书画艺术研究会副会长&#x…

部署Kubernetes(k8s)集群,可视化部署kuboard

所需机器 主机名地址角色配置k8s-master192.168.231.134主节点2核4G,centos7k8s-node1192.168.231.135工作节点2核4G,centos7k8s-node2192.168.231.136工作节点2核4G,centos7 主节点CPU核数必须是 ≥2核且内存要求必须≥2G&#xff0c;否则k8s无法启动 1. 集群环境部署【三台…

40G AOC线缆全系列产品知识详解

40G AOC&#xff08;Active Optical Cable&#xff09;线缆作为高速数据传输的重要组成部分&#xff0c;在现代通信和数据中心应用中扮演着重要角色。本期文章我们将从其基本原理、应用领域、优势特点等方面对ETU-LINK 40G AOC全系列产品进行解析。 一、40G AOC全系列产品解析…

Windows Server C盘空间不足怎么办?

Windows Server 2016/2019/2022中占用C盘空间的主要内容为&#xff1a;分页文件、休眠文件、临时文件、备份文件、浏览器下载文件等&#xff0c;随着计算机使用时间的增长&#xff0c;这些文件也会逐渐增多&#xff0c;从而导致C盘驱动器爆满而导致系统运行缓慢而崩溃。那么&am…

Java监听器与观察者模式

Java监听器与观察者模式 Java中的监听器&#xff08;Listener&#xff09;和观察者模式&#xff08;Observer Pattern&#xff09;都是用于处理对象间的事件通知和响应的设计模式。它们的目的是在对象之间建立一种松散的耦合&#xff0c;使得一个对象的状态变化可以通知到其他…

1311:【例2.5】求逆序对 归并排序

1311&#xff1a;【例2.5】求逆序对 【题目描述】 给定一个序列a1,a2,…,an&#xff0c;如果存在i<j并且ai>aj&#xff0c;那么我们称之为逆序对&#xff0c;求逆序对的数目。 【输入】 第一行为n,表示序列长度&#xff0c;接下来的n行&#xff0c;第i1行表示序列中的第…

如何轻松申请 AWS 免费服务器?看这篇图文教程就够了

一、免费云服务器资源介绍 作为初学者和建站入门人员&#xff0c;低成本搭建相关环境做练手是再实惠不过的&#xff0c;这里就为大家整理了一些提供免费云服务器资源的云平台&#xff0c;大家可以根据自己的需求和喜好选择合适的一款&#xff1a; Oracle Cloud&#xff1a;甲…

DApp测试网络Ganache本地部署并实现远程连接

文章目录 前言1. 安装Ganache2. 安装cpolar3. 创建公网地址4. 公网访问连接5. 固定公网地址 前言 Ganache 是DApp的测试网络&#xff0c;提供图形化界面&#xff0c;log日志等&#xff1b;智能合约部署时需要连接测试网络。 Ganache 是一个运行在本地测试的网络,通过结合cpol…

领导力的3个常见误区,你可能中了其中之一

什么是领导力&#xff1f; 领导力是组织和团队成功的关键。在一个不断变化的商业环境中&#xff0c;理解领导力的本质至关重要。这篇文章将揭示有关领导力的三个常见误解&#xff0c;帮助读者更清晰地认识领导者的角色。 关于领导力的常见误解 人们对领导力的理解经常受到错…

阿里云RDS MySQL 数据如何快速同步到 ClickHouse

云数据库 RDS MySQL 和 云数据库 ClickHouse 是阿里云推出的两个备受欢迎的数据库解决方案&#xff0c;它们为用户提供了可靠的数据存储方案、分析数仓方案&#xff0c;本文介绍如何快速将 RDS MySQL 的数据同步到云数据库 ClickHouse。 如何快速将RDSMySQL的数据同步到云数据库…

LeetCode-2487. 从链表中移除节点【栈 递归 链表 单调栈】

LeetCode-2487. 从链表中移除节点【栈 递归 链表 单调栈】 题目描述&#xff1a;解题思路一&#xff1a;可以将链表转为数组&#xff0c;然后从后往前遍历&#xff0c;遇到大于等于当前元素的就入栈&#xff0c;最终栈里面的元素即是最终的答案。解题思路二&#xff1a;递归&am…

SpringIOC之DependsOn

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+M…

基于Spring Boot+Vue.js的停车场收费管理系统 需求分析

1 用户&#xff08;收费员&#xff09; 1.1 主页 1.1.1 摄像头实时捕捉画面&#xff0c;如果有车牌号则识别出车牌&#xff08;如&#xff1a;京A11111&#xff09;&#xff0c;通过车牌底色识别出小型车&#xff08;蓝色&#xff09;、大型车&#xff08;黄色&#xff09;。…