nasm程序集sys_execve / bin / sh

时间:2017-03-11 22:12:31

标签: linux assembly nasm x86-64 shellcode

我正在尝试触发sys_execve(X86_64)。

section .data
file db "/bin/sh",0

section .text
global _start

_start:

mov rax, 59
mov rdi, file
lea rsi, [file] 
mov rdx, 0
syscall

它提供分段错误

我做错了什么?

我甚至试图把它放在C源代码中:

int main(void)
{
char shellcode[] =
"\xb8\x3b\x00\x00\x00"
"\x48\xbf\xd0\x00\x60\x00\x00"
"\x00\x00\x00"
"\x48\x8d\x34\x25\xd0\x00\x60"
"\x00"
"\xba\x00\x00\x00\x00"
"\x0f\x05";

(*(void (*)()) shellcode)();

return 0;
}

这也给我一个分段错误......

2 个答案:

答案 0 :(得分:1)

您正在通过将字符串/bin/sh加载到rsi来使内核取消引用字符串dx

通过将sisection .text global _start _start: mov rax, 59 mov rdi, file // *filename mov rsi, 0 // *argv mov rdx, 0 // *envp syscall section .data file db "/bin/sh",0 设置为0来传递空的环境和参数。

$scope.user='UserName';
$scope.openList=function(){
   $('#poplist').modal('show')
}
$scope.getUser=function(){
   console.log('username are ' + $scope.user); // here i am getting $scope.user is null
} 

答案 1 :(得分:1)

我明白了:

section .data
file db '/bin/sh',0
file_arg db 'sh',0
argv dq file_arg, 0

section .text
global _start
_start:
mov     rax, 59
mov     rdi, file
mov     rsi, argv
mov     rdx, 0
syscall