最近在ubuntu20.04系統上編譯一段簡單的shellcode彙編程式碼時遇到了標題中的錯誤,輸入命令如下:
nasm -f elf -o shellcode.o shellcode.asm ld -o shellcode shellcode.o
出現錯誤如下:
ld: i386 architecture of input file `shellcode.o' is incompatible with i386:x86-64 output
原因是我使用的ubuntu20.04是64位系統,而我的code是32位應用程式。在x86_64上編譯/連結32位應用程式時,需要設定模擬elf_i386來提供正確的elf格式。
解決方案:
ld -m elf_i386 -s -o shellcode shellcode.o
執行的shellcode.asm程式碼如下:
section .txt global _start _start: xor eax, eax push eax ;"\x00" push 0x68732f2f ;"//sh" push 0x6e69622f ; /"bin" mov ebx, esp push eax ; "\x00" to stack push ebx ; store "/bin//sh" to stack mov ecx, esp ; ecx = esp xor edx, edx ; edx = 0 mov al, 0xb ; al = 11 the call number of execve int 0x80
本作品採用《CC 協議》,轉載必須註明作者和本文連結