繁体   English   中英

AARCH64 iOS Darwin 的执行程序集 Shellcode

[英]Execve Assembly Shellcode for AARCH64 iOS Darwin

最近一直在尝试探索iOS命令shell编程。 我可以成功编写一个简单的汇编“Hello World”程序,如下所示:

.global _main
.align 2

.text
_main:

   mov x0, 1
   mov x2, 14
   adr x1, hello_txt
   mov x16, 4
   svc 0


   mov x16, 1
   svc 0

hello_txt: .ascii "Hello, World!\n"

Then I started to try writing execve shellcode based on syscall values: https://thog.github.io/syscalls-table-aarch64/latest.html based on this sample: https://github.com/johnjohnsp1/shellcode-1 /blob/master/os/linux/arm64/execve.s

.global _main
.align 2
.text

_main:
     // execve("/bin/sh", NULL, NULL);
     adr    x0, sh         // x0 = "/bin/sh"
     eor    x1, x1, x1     // x1 = NULL
     eor    x2, x2, x2     // x2 = NULL
     mov    x16, 221      // x16 = execve
     svc    0

sh:
     .ascii "/bin/sh\0"

不幸的是,该程序没有得到 shell。 我尝试了 /bin/ls 等,但它都不起作用。

我后来从 C 程序内部调用了 execve,它成功运行 /bin/ls 但不运行 /bin/bash。 似乎 iOS 不允许从系统或 execve 调用 /bin/bash。

我的问题; 有什么办法吗? 或者我怎样才能进步更多? 太感谢了。

更新

感谢 Siguza 的反馈,我可以有一个工作的程序集 shellcode(在越狱设备上):

     .global _main
     .align 2
     .text

_main:
     // execve("/bin/sh", NULL, NULL);
     adr    x0, sh         // x0 = "/bin/sh"
     eor    x1, x1, x1       // x1 = NULL
     eor    x2, x2, x2     // x2 = NULL
     mov    x16, 59      // x16 = execve
     svc    0

sh:
     .ascii "/bin/bash\0"

您在非 Linux kernel 上使用 Linux 系统调用号。
XNU 下的 Execve 为59来源)。

但是除非您处于越狱环境中,否则您将不会拥有/bin/ls/bin/bash ,沙箱也不会让您execve任何操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM