[BT]小迪安全2023学习笔记(第24天:Web攻防-SQL注入)

第24天

SQL注入原理

基于攻击者向应用程序输入字段中插入恶意的SQL代码,这些输入最终会被应用程序未经适当清洁或验证直接传递给数据库执行。当这些恶意输入与应用程序的原始SQL语句结合时,它们可以修改原始SQL查询的意图,允许攻击者执行未授权的数据库操作。

常见的Payload示例
假设一个网站有一个登录表单,后端代码直接将用户输入的用户名和密码拼接到SQL查询中,以验证用户。在没有适当防护的情况下,攻击者可以尝试以下payload:

' OR '1'='1

后端代码:

SELECT * FROM users WHERE username = '$username' AND password = '$password';

攻击者将上述payload作为用户名或密码输入时,最终的SQL查询可能变为:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

这里的 ‘1’=‘1’ 总是为真,导致这个查询条件忽略了原始的用户名和密码检查,可能返回数据库中的所有用户信息。

经常在能够输入数据的地方进行SQL注入,包括url传参与表单等

SQL注入攻击流程

  1. 分析网站数据库类型
  2. 根据数据库类型选择对应思路

Access数据库

字典猜解

payload示例

UNION SELECT 1,2, admin, 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 FROM admin

UNION操作符在SQL中用于合并两个或多个SELECT语句的结果集,并且删除重复的记录。每个SELECT语句内部必须有相同数量的选取列,列也必须有相似的数据类型。同时,每个SELECT语句中的列的顺序也必须一致。

这里的意图是将原查询的结果集与一个新的SELECT查询的结果集合并。新的SELECT查询尝试从admin表中选取admin列以及一系列数字作为填充数据,以确保列的数量与原查询匹配。这种技巧常用于探测或抽取特定表的数据。

注意:这里需要存在admin表,确定数据库的表名和列名通常通过字典猜解获得

偏移注入

偏移注入适用于知道表名,但不知道列名的时候。字段就是列

  1. 首先是order by查询字段数,
  2. 再确定表名
  3. 再select 1,2,4,5,admin.* from admin查询字段数

payload示例:

127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,*from(admin as a inner join admin as b on a.id = b.id)

MySQL

MYSQL5.o以上版本:自带的数据库名information schema
information_schema:存储数据库下的数据库名及表名,列名信息的数据库

获取相关数据:

  1. 数据库版本-看是否符合information_schema查询-version ()
  2. 数据库用户-看是否符合RooT型注入攻击-user ()
  3. 当前操作系统-看是否支持大小写或文件路径选择-@@version compile_os-win
  4. 数据库名字-为后期猜解指定数据库下的表,列做准备-database ( )

payload示例:

?id=-2 UNION SELECT version(), 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17

version() 是一个数据库函数,用于返回数据库的版本信息。
后面跟随的数字2, 3, …, 17是为了匹配原查询中的列数,以确保UNION操作可以成功执行。这些数字本身通常不重要,只是占位符,用于满足UNION查询要求的列数一致性。
攻击目的
攻击者的目的是绕过正常的应用逻辑,通过注入UNION SELECT查询来获取数据库的版本信息,这可能是进一步攻击的跳板,因为知道了数据库的具体版本后,攻击者可以针对该版本已知的漏洞进行定向攻击。

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

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

相关文章

《系统架构设计师教程(第2版)》第6章-数据库设计基础知识-04-应用程序与数据库的交互

文章目录 1. 库函数级别访问接口2. 嵌入SQL访问接口2.1 概述2.2 数据库厂商 3. 通用数据接口标准3.1 开放数据库连接 (ODBC)3.2 一些数据库接口1)数据库访问对象 (DAO)2)远程数据库对象 (RDO)3)ActiveX数据对象 (ADO)4)Java数据库…

python爬虫实战——小红书

目录 1、博主页面分析 2、在控制台预先获取所有作品页的URL 3、在 Python 中读入该文件并做准备工作 4、处理图文类型作品 5、处理视频类型作品 6、异常访问而被中断的现象 7、完整参考代码 任务:在 win 环境下,利用 Python、webdriver、JavaS…

在Django中使用PyJWT实现登录及验证功能

目录 1、安装PyJWT 2、对信息加密及解密 3、配置登录视图和及url 4、登录装饰器 5、在验证有登录权限的的视图中登录 PyJWT的使用 1、安装PyJWT pip isntall pyjwt 2、对信息加密及解密 import jwt import datetime from jwt import exceptions# 加密盐 JWT_SALT &qu…

Spring Boot中Excel数据导入导出的高效实现

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

《Ubuntu20.04环境下的ROS进阶学习4》

一、发布地图消息 在上一小节中我们已经获取到了激光雷达的数据,在本接中我们将学习地图数据格式和如何发布地图数据。 二、了解地图数据格式 首先登录 index.ros.org 网站搜索一下map_server消息包。您也可以直接搜这个网址 map_server - ROS Wiki ,下翻…

QT 如何防止 QTextEdit 自动滚动到最下方

在往QTextEdit里面append字符串时,如果超出其高度,默认会自动滚动到QTextEdit最下方。但是有些场景可能想从文本最开始的地方展示,那么就需要禁止自动滚动。 我们可以在append之后,添加如下代码: //设置编辑框的光标位…

水库大坝安全监测中需要注意的事项

随着经济和社会的发展,水资源的需求也在不断增加。因此,建设水库已成为保障水资源的主要方式之一。然而,随着水库规模的增大和工程的复杂性的增加,水库大坝的安全问题也日益引起重视。为此,需要对水库大坝进行安全监测…

链路聚合实验(华为)

思科设备参考:链路聚合实验(思科) 一,技术简介 网络设备的链路聚合技术(Link Aggregation)是一种将多个物理链路捆绑在一起,形成一个逻辑链路的技术。这样做可以增加带宽、提高可靠性和实现负…

Spring Cloud Alibaba微服务从入门到进阶(四)(服务发现-Nacos )

Nacos是服务发现组件和配置服务器 作为服务发现注册组件Nacos Server 搭建Nacos Server 下载、启动 访问nacos,默认 用户/密码 nacos/nacos 将应用注册到nacos 加依赖 在SpringCloud子项目中,Feign是属于OpenFeign,Sentinel、Nacos是属于alibaba的&…

Python数据分析-4

1.对于一组电影数据,呈现出rating,runtime的分布情况: #encodingutf-8 import pandas as pd import numpy as np from matplotlib import pyplot as plt file_path "./youtube_video_data/IMDB-Movie-Data.csv" df pd.read_csv(file_path) …

新火种AI|GPT-4诞生1年,OpenAI把它放到了机器人上

作者:一号 编辑:美美 ChatGPT拥有了身体,机器人也有了灵魂。 从OpenAI在去年3月14日拿出GPT-4后,已经过了整整一年。显然,在GPT-4诞生之后的这一年,一切都迭代得太快了,从GPT-4展现多模态能力&…

【源码独家】GPU池化平台 AI训练平台 AI推理平台

GPU池化软件 | (AI人工智能训练平台、AI人工智能推理平台) 讨论群v:🚀18601938676 一、AI人工智能开发-------------面临的问题和挑战 1. GPU管理难题 1.1 资源管理难:算力资源昂贵,但是缺乏有效管理,闲置情况严重。 1.2 用户…

【Unity】Transform、Rigidbody、CharacterController移动

前言 在使用Unity开发的时候,移动是最最基础的一个需求,我来给大家简单的讲一下Unity中的几种常见的移动方法。 1.Transform移动 Transform移动就是修改物体的position ①修改位置 这里要注意:坐标分为世界坐标和本地坐标 //将物体的世界坐…

【数学】【计算几何】1453. 圆形靶内的最大飞镖数量

作者推荐 视频算法专题 本文涉及知识点 数学 计算几何 LeetCoce:1453. 圆形靶内的最大飞镖数量 Alice 向一面非常大的墙上掷出 n 支飞镖。给你一个数组 darts ,其中 darts[i] [xi, yi] 表示 Alice 掷出的第 i 支飞镖落在墙上的位置。 Bob 知道墙上所有 n 支飞…

bootstrap企业网站前端模板

介绍 企业网站前端模板 软件架构 前端所用技术html/css/js/jquery 前端框架bootstrap 安装教程 浏览器本地路径访问发布到服务器比如(tomcat/nginx等)云服务器/虚拟机 网站效果图 网站预览 点击预览 源码地址 https://gitee.com/taisan/company…

React——react 的基本使用

前提:安装全局的脚手架,通过create-creat-app 项目名,我们创建好一个新项目,cd进去,通过npm start去运行该项目 注意:简单看下demo的配置,在根目录我们可以看到,没有任何webpack的…

【MIT 6.S081】2020, 实验记录(8),Lab: locks

目录 Task 1&#xff1a;Memory allocator (moderate)</font>Task 2&#xff1a;Buffer cache (hard)</font> Task 1&#xff1a;Memory allocator (moderate) 这个任务就是练习将一把大锁拆分为多个小锁&#xff0c;同时可以更加深入地理解 memory allocator 运行…

R语言深度学习-3-过拟合问题(无监督正则化/Lasso回归/岭回归/集成和平均算法)

本教程参考《RDeepLearningEssential》 我们从上一个教程看到&#xff0c;我们看到在我们训练迭代或者训练更大神经网络的时候&#xff0c;往往会产生过拟合&#xff0c;而且越来越严重&#xff0c;它可能会把训练它的数据拟合的很好&#xff0c;但是未必能把新数据做的很好。…

HSE化工应急安全生产管理平台:衢州某巨大型化工企业的成功应用

在化工行业中&#xff0c;安全生产一直是至关重要的议题。为了提高生产安全性、降低成本并提升企业形象&#xff0c;衢州某巨大型化工企业引入了HSE化工应急安全生产管理平台&#xff0c;取得了显著的改善和获益。 该平台的核心功能包括风险管理和应急预案制定。通过对化工生产…

KubeSphere 社区双周报|2024.02.29-03.14

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2024.02.29-03.14…