使用 gnu asm 在 x64 中使用参数执行

2023-12-30

我正在尝试在 Linux 的 GNU asm 中编写 shellcode,但无法使用参数调用 execve。

我正在尝试做什么:

execve("/bin/ls", ["/bin/ls", "-la", NULL], NULL);

这是我的代码:

.section .text
.globl _start
_start:
    push $0x3b
    pop %rax
    xorq %rdx,%rdx
    
    push %rdx
    movabs $0x61616161616c2d2d,%r8
    shr $0x8, %r8
    push %r8
    
    movabs $0x736c2f6e69622f2f,%r8
    shr $0x8, %r8                    
    push   %r8
    mov    %rsp,  %rdi
    push   %rdx
    push   %rdi
    mov    %rsp,  %rsi
    syscall
    
    push $0x3c
    pop %rax
    xorq    %rdi,  %rdi
    syscall

在 execv 的系统调用之前,这是我的 reg/stack :gdb https://i.stack.imgur.com/xztSp.png

我想 : RDI 必须包含“/bin/ls”地址 RSI 必须包含“/bin/ls”地址 RDX = 空

shellcode 正在执行 /bin/ls 但不使用 -la args。

怎么了 ?

thx


您从未将指针推入第二个 argv 字符串。push %rdx; push %rdi压入 NULL,然后将指针推入"/bin/ls",但是没有指向你的指针"-laaaaa"。你还需要一份push介于两者之间。例如:

    push %rdx           // NULL
    lea 8(%rdi), %rcx   // pointer to "-laaaaa"
    push %rcx
    push %rdi           // pointer to "/bin/ls"
    mov %rsp, %rsi      // pointer to the argument vector
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 gnu asm 在 x64 中使用参数执行 的相关文章

随机推荐

  • 如何在 Bash 中获取当前可用磁盘空间?

    我正在运行一些操作 这些操作不断消耗我的磁盘空间 因此 我希望我的计算机在磁盘空间低于 2GB 时发出声音 我知道我可以通过运行获得列出可用磁盘空间的输出df h Filesystem Size Used Avail Capacity iu
  • 为什么 perf stat 将“stalled-cycles-backend”显示为<不支持>?

    Running perf stat ls显示这个 Performance counter stats for ls 1 388670 task clock 0 067 CPUs utilized 2 context switches 0 0
  • gcc静态库链接与动态链接

    我的构建环境是CentOS 5 我有一个名为 libcunit 的第三方库 我用 autotools 安装了它 它生成了两个libcunit a and libcunit so 我有自己的应用程序 它与一堆共享库链接 libcunit a位
  • 错误:“未提供名称属性”- 用于 log4j2.properties 自定义

    我正在自定义 log4j2 properties 以在所需位置生成日志文件 这样做时我收到以下错误 我的 log4j2 properties 文件 status debug name properties configuration Giv
  • CSS 伪类后备?

    我想使用tr nth child even odd 表的伪类 但我也想支持 IE 2 群体 那么 有没有纯CSS的方式来添加边框tr if nth child不支持 你可以试试选择性 http selectivizr com 我认为这是最简
  • 类模板构造函数重载解决歧义

    我正在编写一个像 stl 矢量这样的类模板 两个构造函数如下所示 template
  • 在 Python 中访问 R 用户定义的函数

    因此 我需要通过交叉验证进行原理组件回归 但我在 Python 中找不到可以执行此操作的包 我编写了自己的 PCR 类 但是当针对 R 的 pls 包进行测试时 它的性能明显更差 并且在高维数据 50000 个特征 上速度慢得多 我仍然不确
  • 如何强制 Hibernate 返回空值而不是 null?

    我正在使用 Oracle 11GR2 当 varchar2 字段为空时 执行System out println空白字段上将显示null在我的 Eclipse 控制台上 我怎样才能让它显示空字符串 在 getter 中使用这个技巧很好 但它
  • SameSite None 未在 Azure Web App 中设置 cookie 属性

    为了准备 Chrome 80 中 SameSite 即将发生的更改 我已将 NET Framework API 从4 6 2 to 4 7 2 我创建了一个简单的测试端点 只需设置一个 cookieSameSite None public
  • 强制下载 iOS 5.0.1 符号

    一位客户向我发送了 iOS 5 0 1 9A405 设备的崩溃日志 我在 Snow Leopard 上运行 Xcode 4 2 崩溃日志调用堆栈的系统部分无法符号化 并且它们似乎与崩溃相关 Xcode 中没有 iOS 5 0 1 符号 我没
  • WIX - 对安装取消运行自定义操作

    我正在使用 WIX 编写安装程序 当用户按下 取消 按钮时 我需要执行自定义操作 我创建了一个自定义操作 但我似乎找不到在哪里使用该操作 有什么想法我该怎么做吗 尝试类似的方法
  • 导航栏随着 CSS 动画消失

    我正在使用 Animate css 库中的 CSS3 动画 它们真的很棒 当我将它们与 WOW js 结合起来时 它们工作得非常完美 但是 当我向下滚动页面并且动画进入屏幕时 屏幕顶部的固定导航栏会消失几秒钟 动画显示的时间 然后返回屏幕
  • 适用于 Android 和 iOS 的应用程序 OpenStreetMap [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想使用 OpenStreetMap 制作一个移动本机应用程序 Android 和 iOS 我需要离线
  • Swift 中的惰性属性相当于 Objective C 中的惰性 Init getter

    Swift 中的惰性属性是否相当于用 Objective C 中的惰性加载模式覆盖 getter 来自文档 惰性存储属性是指直到第一次使用时才计算其初始值的属性 您可以通过在声明之前写入惰性属性来指示惰性存储属性 所以 大多数情况下 是的
  • 位图图像未显示在 imageview 中

    我创建了一个应用程序 在其中允许用户从图库中选择图像或从相机拍摄照片并将该图像上传到网络服务器 此代码工作正常 现在在其他屏幕中 我正在从网络服务器下载图像并存储该图像在 SD 卡中 问题是 如果从图库中选择图像 则图像将显示在图像视图中
  • ANTLR:自定义语法示例的词法错误帮助

    什么方法可以让我最大限度地报告词法错误 举一个简单的例子 我想为以下文本编写语法 为了简单起见 空格被忽略 字符串常量中不能有 myvariable 2 myvariable hello world Group myvariablegrou
  • 使用 window 作为原型在 javascript 中返回看似错误的值

    您希望此代码返回 123 但它返回的是窗口对象 function W this window 123 W prototype window new W window window object not 123 请检查后续问题 window
  • ElasticSearch 中过滤的嵌套inner_hits 查询的聚合

    我刚接触 ElasticSearch 几天 作为一项学习练习 我实现了一个基本的职位抓取工具 它聚合来自几个职位列表网站的职位 并用一些数据填充索引供我使用 我的索引包含每个列出职位的网站的文档 每个文档的属性都是一个 jobs 数组 其中
  • WPF - MVVM 屏幕管理

    想象一下您有一个复杂的数据对象 它足够复杂 以至于要编辑对象的各种属性 用户最好拥有多个屏幕 它本质上是一个配置项目的购物车 因此 一个屏幕就可以让您添加项目 另一种方法允许您对这些项目进行修改 即预先确定的更改 这些更改会产生相关成本 第
  • 使用 gnu asm 在 x64 中使用参数执行

    我正在尝试在 Linux 的 GNU asm 中编写 shellcode 但无法使用参数调用 execve 我正在尝试做什么 execve bin ls bin ls la NULL NULL 这是我的代码 section text glo