基于 C 有符号整数的攻击

2024-01-13

我正在读书这个问题 https://stackoverflow.com/questions/21217126/memcpy-implementation-strict-aliasing以及提到的评论之一基于 C 有符号整数的攻击.

我知道什么是int溢出是,但我不明白这怎么用attack一个程序。
到底是什么意思攻击程序?如果您知道该程序有此错误,您该如何使用它?
这是否仅限于signed int.
如果是的话为什么? C++ 中的情况又如何?
如果问题很微不足道,我很抱歉


例如,FreeBSD 的 getpeername 函数中存在一个错误。

为了说明这一点,我们用一个函数void copyFromKernel(char* dest, int size)从受限内存区域复制size bytes.

您可能已经知道,memcpy 函数的声明如下:

void * memcpy ( void * destination, const void * source, size_t num );

其中 size_t 是无符号类型。如果在我们的函数中,我们做了类似的事情:

void copy_from_kernel(void *user_dest, int maxlen) {
    int len = KSIZE < maxlen ? KSIZE : maxlen;
    memcpy(user_dest, kbuf, len);
}

,其中 KSIZE 是我们允许用户复制的最大字节数。如果调用者发送 maxlen 的正值,则该函数将按预期工作。但如果调用者发送 maxlen 的负值,则比较将通过,并且 memcpy 的第三个参数将是该负值。当它被转换为无符号时,复制的字节数将会很大,因此调用者可能会得到受限的数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于 C 有符号整数的攻击 的相关文章

  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • Rails 选择助手 - 默认选择值,如何?

    这是我现在使用的一段代码 如何修改它使其默认值等于params pid 页面何时加载 这应该可以做到
  • TFS:查询包含特定变更集的构建

    我有许多基于 TFS 中的单个分支 例如 Main 执行的构建定义 我想 以某种方式 查询 TFS 以查找包含我提供的特定变更集编号的所有构建 并返回 TFS 包含的构建名称的字符串列表 任何类型的应用程序 VS 扩展 CLI 应用程序 w
  • 在Python中组合多个for循环

    比方说 我们有一个名为 articles 的变量中的对象列表 每个对象都有一个成员 tags 这是一个简单的列表 预期输出 所有文章中的所有标签 加入到一个列表中 在多行中 解决方案是 arr for article in articles
  • PHP 中的递归生成器

    介绍 自 PHP 5 5 版本以来 出现了以下很棒的功能发电机 http php net manual en language generators overview php 我不会重复官方手册页 但它们对于迭代器的简短定义来说是很棒的事情
  • Facebook 链接将在应用程序而不是浏览器中打开[重复]

    这个问题在这里已经有答案了 可能的重复 从其他应用程序启动 Facebook 应用程序 https stackoverflow com questions 4191492 launch facebook app from other app
  • 动态编辑 Tensorflow 对象检测的管道配置

    我正在使用tensorflow对象检测API 并且我希望能够在python中动态编辑配置文件 如下所示 我想过在 python 中使用协议缓冲区库 但我不知道如何去做 model ssd num classes 1 image resize
  • “支持的最低 Gradle 版本是 2.14.1。当前版本是 2.10。”错误[重复]

    这个问题在这里已经有答案了 我正在尝试升级我的 Android 应用程序 但收到以下错误 支持的最低 Gradle 版本为 2 14 1 当前版本是2 10 如果使用 gradle 包装器 请尝试将 C Users MyUser Deskt
  • 如何使用 Translate Toolkit 将 .po 转换为 PHP 数组(Zend Framework)?

    我正在尝试使用po2php http docs translatehouse org projects translate toolkit en latest commands php2po html将我的 po 文件转换为 Zend ph
  • Docusign:使用 REST API 和预填充标签通过模板创建信封

    我正在集成 Docusign 以便收件人可以看到他们的信封嵌入在我的网站上 我首先使用 api 创建信封 然后尝试使用动态数据预填充数据字段 据我所知 我用来创建信封的 json 没有任何问题 StackOverflow 上针对此问题的其他
  • 有没有办法将 QWidget 添加到 QtCreator 中的 QMenu

    我正在创建一个文本编辑器 我想把QComboBox in the QMenu 我在里面没有找到任何方法QMenu处理过这样的事情 最接近的是QMenu addAction 我想知道如何绕过这个障碍 Thanks 你必须子类化QWidgetA
  • 高斯模糊和卷积核

    我不明白什么是卷积核以及如何将卷积矩阵应用于图像中的像素 我说的是对图像进行高斯模糊操作 我还可以获得有关如何为高斯模糊操作创建内核的解释吗 我在读本文 http en wikipedia org wiki Gaussian blur但我似
  • 点击视口底部时阻止 Mobile Safari 显示工具栏

    我们有一个简单的移动应用程序在 iOS 上的 Mobile Safari MS 中运行 当用户向下滚动页面时n像素 一个 顶部 按钮从底部向上滑动 顶部按钮是固定位置 问题是 当您开始在 MS 中滚动时 导航和工具栏 UI 会被隐藏 当您点
  • 无法使用 servlet 和 jsp 更新表中的特定记录

    大家好 我为用户创建了一个 jsp 页面 他们可以在其中更新其现有详细信息 并且提交时记录会在数据库中更新 1 gt 帐户详细信息 java Java Servlet program responsible for obtaining th
  • Github:带有拉取请求的分叉

    我正在研究这段代码 https github com samvermette SVPullToRefresh https github com samvermette SVPullToRefresh 这有许多拉取请求待处理 但由于某种原因
  • 模拟子进程.Popen

    我有一个模块 utils py 它有这个 run cmd 方法 def run cmd cmd pipe subprocess Popen cmd shell True stdout subprocess PIPE stderr subpr
  • Linq 不同 - 计数

    我希望对示例对象列表执行查询 Date Username 01 01 2011 james 01 01 2011 jamie 01 01 2011 alex 01 01 2011 james 02 01 2011 matt 02 01 20
  • Friendly_id使用belongs_to关联中的值

    我有以下型号 class User lt ActiveRecord Base extend FriendlyId friendly id first name use gt slugged has one professor after c
  • C# 线程安全快速计数器

    在 C 中获得具有最佳性能的线程安全计数器的方法是什么 这很简单 public static long GetNextValue long result lock LOCK result COUNTER return result 但还有更
  • iOS14.2中的SwiftUI PageTabView会多次调用ChildView的onAppear方法

    我使用 TabView PageTabViewStyle 和 SwiftUI 来显示页面视图 当我滑动这个 TabView 时 我发现子视图会多次调用 onAppear 方法 有人可以告诉我为什么吗 这是我的代码 import SwiftU
  • 基于 C 有符号整数的攻击

    我正在读书这个问题 https stackoverflow com questions 21217126 memcpy implementation strict aliasing以及提到的评论之一基于 C 有符号整数的攻击 我知道什么是i