当前位置: 首页 > news >正文

《小迪安全》学习笔记05

目录

读取:

写入:


(其中的读取和写入时我认为比较重要的,所以单独做成了目录,这里的读取和写入是指在进行sql注入的时候与本地文件进行的交互)

好久没发博客了。。。从这篇开始的小迪安全学习笔记就开始进入到漏洞模块了,这篇主要是讲一些与sql注入相关的思想,杂谈一些内容吧先。。

区分两个东西:

SRC:发现漏洞接即可

实战:发现漏洞之后,要根据这个漏洞获取一些相应的权限,如后台权限,甚至是网站权限,最后是提权,获取敏感信息,提供修复建议等等。

高危漏洞:sql注入,upload,文件包含,未授权访问,命令执行

中危漏洞:反序列化,逻辑漏洞

低危漏洞:目录遍历,文件读取,XSS跨站

CTF中web题一般考sql注入,文件上传,反序列化,代码执行,最后渗透测试的关键在于信息收集,(手工加工具都同样重要)。

目录遍历漏洞:其中有些目录不用自己猜,是可以用工具扫到的,其次扫的时候要注意看有没有狗,有狗不能扫否则会把你IP拉黑,目录遍历中的一个小心眼:可以先读这个网站首页的index.php文件,其中可能会有其他目录所在位置信息。

漏洞都是需要一些其他的拿到的信息去配合的

区分:

目录遍历漏洞:只读取文件,文件夹名,只能但是不能读取到文件内容。

文件读取漏洞:单个文件读取,不能读取文件夹里面的内容。

SQL注入

接下来有四种(都有)可能存在注入漏洞的场景:

www.example.com/index.php?id=1

www.example.com/?id=1

www.example.com/index.php?id=1&x=1

www.example.com/index.php

第一个是最正常的,第二个是有些php开发的网站默认首页就是index.php,第三个是多个传参,哪个可以注入注入哪个,第四个是post传参。

一些小常识:

1.一些注入工具(sqlmap)除了指定注入点外,一般默认就是在最后面进行注入。所以在这种个情况下,可以自己把要注入的参数放到最后面:

(.php?a=1&b=2)这种其实是可以互换参数位置的,页面会正常返回,如:(.php?b=2&a=1)。

2.数据库中的点( . )代表下一级,比如 security.user就代表: security数据库下的user表

5.0以上高版本

5.0以下低版本

原来在sql注入中信息收集同样重要,主要收集:

  1. 数据库名字 select database();
  2. 数据库版本 select version();
  3. 数据库用户 select user();
  4. 操作系统 select @@version_compile_os;

select user()  查询用户

root@localhost是权限最高的用户。

那么出现漏洞的数据库(A网站)如果是root最高权限,那么就有可能对同一个数据库下的其他B网站,C网站进行跨库注入。

如果是普通用户的话,只能注入自己的网站数据库,如果是root用户,则可以跨库注入。

以sqli_labs靶场为例,一般的联合查询语句以及注意事项:

  1. select schema_name from information_schema.schemata
  2. select table_name from information_schema.tables where table_schema='security'
  3. select column_name from information_schema.tables where table_name ='users' (最好加上 and table_schema='security')
  4. select username,password from users

(最好写成 from security.users) 因为你在做题时,不一定就在security数据库下

#文件读写操作

读取:

load_file() 函数: 可以读取本地的文件(下图为读取C盘123文件夹下的1.txt)

注意:路径层级要用 / ,而不是 \

如果显示NULL,进行以下操作:

打开my.ini文件,在[mysqld]下面添加这行代码:

secure_file_priv=

然后重启mysql

写入:

into outfile函数

Into dumpfile函数

将ilwa写入2.txt文件中。

一般我们会用这些函数读取网站,服务器的敏感文件,配置信息,具体文件在网上找。也可以写入一句话木马,用蚁剑连接,直接获取网站权限。

获取网站目录/路径:

  1. 通过报错信息查看。
  2. 遗留文件 比如phpinfo.php 这里面出现了一些php配置的路径。

        3.平台配置文件

注意:文件读写操作可能会被过滤(幻术引号)

只需要把php的 magic_quotes_gpc改为 off状态就行。

magic_quotes_gpc如果为on状态的话,它会将单引号,双引号,反斜杠(\),null前面都无差别加一个 反斜杠 ”\“

类似函数还有:addslashes()

绕过方法有两种:1.编码(16进制编码 HEX) 或者 宽字节绕过

因为编码用不到单引号,而且可以正常查询,亲测有效↓

相关防御手段:

  1. 幻术引号函数
  2. 内置函数过滤

比如: is_int()

  1. 自定义过滤   比如过滤 or and select where
  2. WAF 过滤 WAF也是主要靠2,3的过滤方法进行过滤

WAF绕过方法有:

更改提交方法

大小写混合

解密编码类

注释符混用

等价函数替换

特殊符号混用

借助数据库特性

HTTP参数污染

垃圾数据溢出

欢迎各位佬批评指正!

相关文章:

《小迪安全》学习笔记05

目录 读取: 写入: (其中的读取和写入时我认为比较重要的,所以单独做成了目录,这里的读取和写入是指在进行sql注入的时候与本地文件进行的交互) 好久没发博客了。。。从这篇开始的小迪安全学习笔记就开始…...

56_多级缓存实现

1.查询Tomcat 拿到商品id后,本应去缓存中查询商品信息,不过目前我们还未建立Nginx、Redis缓存。因此,这里我们先根据商品id去Tomcat查询商品信息。此时商品查询功能的架构如下图所示。 需要注意的是,我们的OpenResty是在虚拟机,Tomcat是在macOS系统(或Windows系统)上,…...

每日进步一点点(网安)

今日练习题目是PHP反序列化,也学习一下说明是序列化和反序列化 1.PHP序列化 序列化是指将数据结构或对象转换为可传输或可储存的格式的过程。这通常需要将数据转换为字节流或者其他编码格式,以便在不同系统和应用程序之间进行传输或存储 在PHP中&…...

宝塔php7.4安装报错,无法安装,php8以上可以安装,以下的不行,gd库什么的都正常

宝塔的依赖问题导致的问题,最后手动挂载后才解决。。。废了三天三夜终于搞好了。。。。无语~ 建议:不要一直升级宝塔版本,升级前备份或者开服务商的实例镜像,方便恢复,不然,可就GG了&#xff5…...

SDL2:PC端编译使用

SDL2:PC端编译使用 1. SDL2:PC端编译使用1.1 安装必要的依赖1.2 下载编译SDL21.3 SDL2使用示例:Audio1.4 运行示例程序 1. SDL2:PC端编译使用 1.1 安装必要的依赖 首先,确保安装了编译SDL2所需的依赖库: …...

Windows 蓝牙驱动开发-蓝牙设备栈

蓝牙设备栈 蓝牙驱动程序堆栈包含 Microsoft 为蓝牙协议提供支持的核心部分。 有了这个堆栈,已启用蓝牙的设备可以彼此定位并建立连接。 在此类连接中,设备可以通过各种应用程序交换数据并彼此交互。 下图显示了蓝牙驱动程序堆栈中的模块,以…...

docker一张图理解

1、push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库。参数说明: –disable-content-trust : 忽略镜像的校验,默认开启 # 上传本地镜像myapache:v1到镜像仓库中。 docker push myapache:v1 1.2、search 从Docker Hub查找镜像。参数说明: –…...

RocketMQ、Kafka、RabbitMQ,如何选型?

如何根据应用场景选择合适的消息中间件? 分布式、微服务、高并发架构中,消息队列(Message Queue,简称MQ)扮演着至关重要的角色。 消息队列用于实现系统间的异步通信、解耦、削峰填谷等功能。 目前常见的MQ实现包括RabbitMQ、Rock…...

RabbitMQ故障全解析:消费、消息及日常报错处理与集群修复

文章目录 前言:1 消费慢2 消息丢失3 消息重复消费4 日常报错及解决4.1 报错“error in config file “/etc/rabbitmq/rabbitmq.config” (none): no ending found”4.2 生产者发送消息报错4.3 浏览器打开IP地址,无法访问 RabbitMQ(白屏没有结…...

无公网IP 实现外网访问本地 Docker 部署 Navidrome

Navidrome 是一款可以在 macOS、Linux、Windows以及 Docker 等平台上运行的跨平台开源音乐服务器应用,它支持传输常见的 MP3、FLAC、WAV等音频格式。允许用户通过 Web 界面或 API 进行音乐库的管理和访问。本文就介绍如何快速在 Linux 系统使用 Docker 进行本地部署…...

pnpm add 和 pnpm install 的区别?

文章目录 1. pnpm add2. pnpm install3. 总结应用场景示例 在使用 pnpm 管理项目依赖时, pnpm add 和 pnpm install 是两个常用的命令,但它们的功能和使用场景有所不同。以下是详细的解释: 1. pnpm add 功能:用于向项目的 pack…...

Linux:文件描述符fd、系统调用open

目录 一、文件基础认识 二、C语言操作文件的接口 1.> 和 >> 2.理解“当前路径” 三、相关系统调用 1.open 2.文件描述符 3.一切皆文件 4.再次理解重定向 一、文件基础认识 文件 内容 属性。换句话说,如果在电脑上新建了一个空白文档&#xff0…...

CPU负载与CPU使用率之区别

在日常的性能测试与系统监控中,CPU负载和CPU使用率是两个常见的指标,它们经常被提及,但也经常被混淆。本文将为你深入解析两者的区别,以及它们各自的意义和应用场景,让你更清楚地掌握这些关键性能指标。 存储、内存和 …...

C++实现设计模式---外观模式 (Facade)

外观模式 (Facade) 外观模式 是一种结构型设计模式,为子系统中的一组接口提供一个一致的界面。外观模式定义了一个更高层次的接口,使得子系统更容易使用。 意图 简化复杂子系统的接口。为客户端提供一个统一的入口,屏蔽子系统的内部细节。 …...

仿射密码实验——Python实现(完整解析版)

文章目录 前言实验内容实验操作步骤1.编写主程序2.编写加密模块3.编写解密模块4.编写文件加解密模块 实验结果实验心得实验源码scirpt.pyusefile.py 前言 实验目的 1)初步了解古典密码 2)掌握仿射密码的实现 实验方法 根据下图仿射密码(变换…...

【Qt 常用控件】按钮类(QPushButton、QRadioButton、QCheckBox)

按钮控件继承自抽象类QAbstractButton。 抽象类不允许实例化对象,内部定义纯虚函数。只能通过子类继承,重写纯虚函数的方式使用。 1. QPushButton 1.1 QAbstractButton中和QPushButton相关的属性 text按钮显示文本icon按钮图标iconSize按钮图标尺寸s…...

Amazon Relational Database Service (RDS)

Amazon Relational Database Service (RDS) 是 AWS 提供的一项完全托管的关系数据库服务,旨在简化部署、管理和扩展关系型数据库应用程序。通过 RDS,用户可以使用多种流行的关系数据库引擎,如 MySQL、PostgreSQL、MariaDB、Oracle 和 Microso…...

linux分配磁盘空间命令

使用命令lsblk查询linux磁盘空间时,发现空间并没有被分配完 如图,600G,但实际分配了一共199G,剩余500G,我们需要通过命令进行剩余存储的分配。 思路:创建新的分区->更新内核分区表->初始化新分区作…...

21_Spring Boot缓存注解介绍

前面我们通过使用@EnableCaching、@Cacheable注解实现了Spring Boot默认的基于注解的缓存管理,除此之外,还有更多的缓存注解以及注解属性可以配置优化缓存管理。下面我们针对Spring Boot中的缓存注解及相关属性进行详细讲解。 1.@EnableCaching注解 @EnableCaching是由Spri…...

【linux】grep、awk、sed实战练习(1)-template

一、grep常见用法 1.1.从文件中查找关键字符串 # 比如:查找/etc/nginx/nginx.conf文件包含"listen"的行 [rootecs_server test]# grep "listen" -n /etc/nginx/nginx.conf 52: listen 8088; 87: listen 8096; # 比如:查…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?

FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

嵌入式面试常问问题

以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...

react菜单,动态绑定点击事件,菜单分离出去单独的js文件,Ant框架

1、菜单文件treeTop.js // 顶部菜单 import { AppstoreOutlined, SettingOutlined } from ant-design/icons; // 定义菜单项数据 const treeTop [{label: Docker管理,key: 1,icon: <AppstoreOutlined />,url:"/docker/index"},{label: 权限管理,key: 2,icon:…...

软件工程教学评价

王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中&#xff0c;您通过丰富的实例&#xff0c;将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻&#xff0c;让这些理论不再是停留在纸面的名词&#xff0c;而是可以指导…...