《小迪安全》学习笔记05

ops/2025/1/19 6:10:04/

目录

读取:

写入:


(其中的读取和写入时我认为比较重要的,所以单独做成了目录,这里的读取和写入是指在进行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参数污染

垃圾数据溢出

欢迎各位佬批评指正!


http://www.ppmy.cn/ops/151295.html

相关文章

PenGymy论文阅读

这里发现idea被人家先发了,没办法,资料收集的不够全面,现在来学习一下这个项目 这篇论文的贡献如下: 总的来说,他的主要工作是构建逼真的仿真环境,然后根据这个仿真环境生成真实的靶场,使得这个…

Golang Gin系列-3:Gin Framework的项目结构

在Gin教程的第3篇,我们将讨论如何设置你的项目。这不仅仅是把文件扔得到处都是,而是要对所有东西的位置做出明智的选择。相信我,这些东西很重要。如果你做得对,你的项目会更容易处理。当你以后不再为了找东西或添加新功能而绞尽脑…

【Linux】线程全解:概念、操作、互斥与同步机制、线程池实现

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚一、线程概念 📖 回顾进程 📖 引入线程 📖 总结 &a…

MySQL 数据库的备份和恢复(Linux)

数据丢失对任何企业来说都是致命的,而 MySQL 数据库作为大多数企业数据存储的核心,其备份与恢复的重要性不言而喻。尤其是在 Linux 环境下,如何高效、稳定地进行 MySQL 数据库的备份与恢复,成为数据库管理员的必修课。今天&#x…

e2studio开发RA0E1(16)----配置RTC时钟及显示时间

e2studio开发RA0E1.16--配置RTC时钟及显示时间 概述视频教学样品申请完整代码下载硬件准备参考程序新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_UARTA_Open()函数原型回调函数user_uart_callba…

Docker部署Spring Boot + Vue项目

目录 前提条件 概述 下载代码 打开代码 Docker创建网络 MySQL容器准备 MySQL数据库配置 启动MySQL容器 测试连接MySQL 初始化MySQL数据 Redis容器准备 修改Redis配置 启动redis容器 部署后端 后端代码打包 上传jar包到Linux 创建Dockerfile 构建镜像 运行后…

【数据分享】1929-2024年全球站点的逐月平均气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据!本次我们为大家带来的就是具体到气象监…

OpenTelemetry 实践指南:历史、架构与基本概念

背景 之前陆续写过一些和 OpenTelemetry 相关的文章: 实战:如何优雅的从 Skywalking 切换到 OpenTelemetry 实战:如何编写一个 OpenTelemetry Extensions 从一个 JDK21OpenTelemetry 不兼容的问题讲起 这些内容的前提是最好有一些 OpenT…