SQLMAP的使用(rails 为例)

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

假设来一个接口

class YourModel::YourController < ApplicationController
def test_sqlisql = "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::Basedef sqli_testsql = "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 取消备份。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亿欧网首届“元创·灵镜”科技艺术节精彩纷呈,实在智能AI Agent智能体展现硬核科技图景

12月4日-10日&#xff0c;持续一周的首届“元创灵镜”科技艺术节在海南陵水香水湾拉开帷幕&#xff0c;虚实交互创造出的“海岛之镜”开幕式呈现出既真实又虚幻的未来感&#xff0c;融入前沿科技元素的艺术装置作品在“虚实之镜&自然生长”科技艺术展诠释着浪漫想象&#x…

VS2022 将项目打包,导出为exe运行

我有一个在 VS2022 上开发的程序&#xff0c;基于.net 6框架, 想打包成 .exe程序&#xff0c;以在另一个没有安装VS的机器上运行&#xff0c;另一个机器是Win7系统&#xff0c;上面安装了.net 6框架。 虽然网上很多教程&#xff0c;需要安装Project Installer&#xff0c;配置A…

用23种设计模式打造一个cocos creator的游戏框架----(十二)状态模式

1、模式标准 模式名称&#xff1a;状态模式 模式分类&#xff1a;行为型 模式意图&#xff1a;允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 结构图&#xff1a; 适用于&#xff1a; 1、一个对象的行为决定于它的状态&#xff0c;并且它必须…

CommonJs模块化实现原理ES Module模块化原理

CommonJs模块化实现原理 首先看一个案例 初始化项目 npm init npm i webpack -D目录结构如下&#xff1a; webpack.config.js const path require("path"); module.exports {mode: "development",entry: "./src/index.js",output: {path: p…

2019年第八届数学建模国际赛小美赛C题预测通过拥堵路段所需的时间解题全过程文档及程序

2019年第八届数学建模国际赛小美赛 C题 预测通过拥堵路段所需的时间 原题再现&#xff1a; 在导航软件中&#xff0c;行程时间的估计往往是一个重要的功能。现有的导航软件往往通过出租车或安装了该软件的车辆获取实时GPS数据来确定当前的路况。在交通拥堵严重的情况下&#…

安装LLaMA-Factory微调chatglm3,修改自我认知

安装git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda activate llama_factory cd LLaMA-Factory pip install -r requirements.txt 之后运行 单卡训练&#xff0c; CUDA_VISIBLE_DEVICES0 python src/train_web.py…

过拟合与欠拟合

一、模型选择 1、问题导入 2、训练误差与泛化误差 3、验证数据集和测试数据集 4、K-折交叉验证 一般在没有足够多数据时使用。 二、过拟合与欠拟合 1、过拟合 过拟合的定义&#xff1a; 当学习器把训练样本学的“太好”了的时候&#xff0c;很可能已经把训练样本自身的一些特…

Navicat16 无限试用 亲测有效

Navicat16 无限试用 亲测有效 亲测有效&#xff01;&#xff01;&#xff01; 吐槽下&#xff0c;有的用不了&#xff0c;有的是图片&#xff0c;更甚者还有收费的&#xff0c;6的一批 粘贴下面的代码&#xff0c;保存到桌面&#xff0c;命名为 trial-navicat16.bat echo off…

探索GameFi:区块链与游戏的未来融合

在过去的几年里&#xff0c;区块链技术逐渐渗透到各个领域&#xff0c;为不同行业带来了前所未有的变革。其中&#xff0c;游戏行业成为了一个引人注目的焦点&#xff0c;而这种结合被称为GameFi&#xff0c;即游戏金融。GameFi不仅仅是一个概念&#xff0c;更是一场区块链和游…

宏景eHR SQL 注入漏洞复现(CVE-2023-6655)

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR 中发现了一种被分类为关键的漏洞,该漏洞影响了Login Interface组件中/w_selfservice/oauthservlet/%2e../.%2e/genera…

关于“Python”的核心知识点整理大全19

目录 ​编辑 8.6.4 使用 as 给模块指定别名 8.6.5 导入模块中的所有函数 8.7 函数编写指南 8.8 小结 第9章 类 9.1 创建和使用类 9.1.1 创建 Dog 类 dog.py 1. 方法__init__() 2. 在Python 2.7中创建类 9.1.2 根据类创建实例 1. 访问属性 2. 调用方法 3. 创建多…

到底什么是DevOps

DevOps不是一组工具&#xff0c;也不是一个特定的岗位。在我看来DevOps更像是一种软件开发文化&#xff0c;一种实现快速交付能力的手段。 DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理&#xff0c;从而更快、更频繁地交付更稳定的…

宠物自助洗护小程序系统

提供给宠物的自助洗澡机&#xff0c; 集恒温清洗、浴液 护毛、吹干、消毒于一体&#xff0c;宠物主人只需用微信小程序源码&#xff0c;即可一键开启洗宠流程。 主要功能&#xff1a; 在线预约 在线支付 洗护记录 会员系统 宠物管理 设备管理 多商户加盟

大数据技术10:Flink从入门到精通

导语&#xff1a;前期入门Flink时&#xff0c;可以直接编写通过idea编写Flink程序&#xff0c;然后直接运行main方法&#xff0c;无需搭建环境。我碰到许多初次接触Flink的同学&#xff0c;被各种环境搭建、提交作业、复杂概念给劝退了。前期最好的入门方式就是直接上手写代码&…

win10 + vs2017 + cmake3.17编译OSG-3.4.1

1. 下载文件 主要用到4个文件 1&#xff09;OSG-3.4.1源码2&#xff09;OSG第三方依赖库3&#xff09;OSG示例数据4&#xff09;cmake-3.17 我已经准备好了&#xff0c;大家可以自行下载。下载路径&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1E3YESh0T9KPlJJe2…

Android--Jetpack--Navigation详解

须知少日拏云志&#xff0c;曾许人间第一流 一&#xff0c;定义 Navigation 翻译成中文就是导航的意思。它是谷歌推出的Jetpack的一员&#xff0c;其目的主要就是来管理页面的切换和导航。 Activity 嵌套多个 Fragment 的 UI 架构模式已经非常普遍&#xff0c;但是对 Fragmen…

机器人制作开源方案 | 智能助老机器人

作者&#xff1a;刘颖、王浩宇、党玉娟 单位&#xff1a;北京科技大学 指导老师&#xff1a;刘新洋、栗琳 1. 项目背景 1.1 行业背景 随着越来越多的服务机器人进入家庭&#xff0c;应用场景呈现多元化和专业化&#xff0c;机器人产业生态体系正在不断完善&#xff0c;服务…

【MySQL】MySQL库的增删查改

文章目录 1.库的操作1.1创建数据库1.2创建数据库案例 2.字符集和校验规则2.1查看系统默认字符集以及校验规则2.2查看数据库支持的字符集2.3查看数据库支持的字符集校验规则2.4校验规则对数据库的影响 3.操纵数据库3.1查看数据库3.2显示创建语句3.3修改数据库3.4数据库删除3.5备…

2023年医疗器械行业分析(京东医疗器械运营数据分析):10月销额增长53%

随着我国整体实力的增强、国民生活水平的提高、人口老龄化、医疗保障体系不断完善等因素的驱动&#xff0c;我国的医疗器械市场增长迅速。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年10月份&#xff0c;京东平台上医疗器械市场的销量将近1200万&#xff0c;环比…

1+X大数据平台运维职业技能等级证书中级

该部分是选择题部分&#xff0c;实操题在主页的另一篇文章 考试名称&#xff1a;“1X”大数据平台运维职业技能等级证书&#xff08;中级&#xff09; 1X 大数据平台运维中级测试题一、单选题 以下哪种情况容易引发 HDFS 负载不均问题&#xff1f;&#xff08; C&#xff09…