如何解决Execve Assembly Shellcode for AARCH64 iOS Darwin
最近我一直在尝试探索 iOS 命令外壳编程。我可以成功编写一个简单的程序集“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"
然后我开始尝试根据 syscall 值编写 execve shellcode: https://thog.github.io/syscalls-table-aarch64/latest.html 基于此示例: 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 的反馈,我可以有一个有效的 Assembly shellcode(在越狱设备上):
.global _main
.align 2
.text
_main:
// execve("/bin/sh",x1 // x1 = NULL
eor x2,59 // x16 = execve
svc 0
sh:
.ascii "/bin/bash\0"
解决方法
您在非 Linux 内核上使用 Linux 系统调用号。
XNU (source) 下的 Execve 是 59
。
但除非您处于越狱环境中,否则您将不会拥有 /bin/ls
或 /bin/bash
,沙箱也不会让您execve
任何东西。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。