[英]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.